我有这样一个丰富的树:
<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 =&#34;#{positionAdminBean.onCmdSelectPosition}&#34;。
当你看到我的树有两列时,我需要对这段代码做一些事情,每个列都有自己的select监听器。 或做一些当用户点击每一列时它做不同的工作
答案 0 :(得分: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>