2014-09-27 34 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>