2014-09-27 52 views
1

我有这样的richtree:丰富的面孔selectionChangeListener两个不同的列

<rich:tree id="positionTree" 
          value="#{positionAdminBean.positionTree}" 
          var="pos" switchType="ajax" binding="#positionAdminBean.htmlTree}" 
          nodeSelectListener="#{positionAdminBean.onCmdSelectPosition}" 
          ajaxSubmitSelection="true" reRender="positionPanel,mainTabbedPane,selectGroupPanel"> 
<rich:treeNode id="treeNodeId"> 
         <table width="100%"> 
          <tr> 
           <td width="50%"> 
            <h:outputText value="#{pos.name}" id="treeposNameId"/> 
           </td> 
           <td width="40%"> 
            <h:outputText value="#{pos.humanResourceName}" id="treeposHumanResName"/> 
           </td> 
          </tr> 
         </table> 
        </rich:treeNode> 
       </rich:tree> 

这些代码生成和正确显示数据的树。 但我的问题是,当你点击一行它触发nodeSelectListener =“#{positionAdminBean.onCmdSelectPosition}”。

当你看到我的树有两列时,我需要用这段代码做一些事情,每一列都有它自己的选择监听器。 或做些什么,当用户点击每一列时,它会做不同的工作

回答

2

好吧,选择节点时会触发nodeSelectListener。你不能将它分配给只是节点一部分的东西。

您可以定义一个<a4j:jsFunction>并在单击表格单元格时调用它。

<a4j:jsFunction name="firstColumnListener" actionListener="#{bean.doSomething}" … > 
    <a4j:param name="id" assignTo="#{bean.selectedId}" /> 
</a4j:jsFunction> 

<td onclick="firstColumnListener(id)"> 
    … 
</td>