richfaces selectionChange Listener为两个不同的列

时间:2014-09-27 13:36:22

标签: jsf richfaces

我有这样一个丰富的树:

<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监听器。 或做一些当用户点击每一列时它做不同的工作

1 个答案:

答案 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>