1

我正在使用带有树和复选框选择的 primefaces[3.4] 展示:

http://www.primefaces.org/showcase-labs/ui/treeSelectionCheckbox.jsf

是否可以附加 ap:ajax 事件以单击节点的标签?

当用户单击树的节点标签时,我需要更新带有子对象的面板,而不一定是在用户选择它们时(单击复选框)。

提前致谢。

4

3 回答 3

2

您永远不必调用服务器来做一些简单的事情,比如在页面上显示/隐藏其他元素。Primefaces 应该在这方面做得更好。同时,考虑这个javascript代码......

<p:treeNode type="parent" styleClass="parent">
    <h:outputText value="#{myLabel}"/>
</p:treeNode>

...

<script>
jQuery(".parent > .ui-tree-selectable > .ui-treenode-label").each(function(){
    var label = jQuery(this);

    label.click(function(){
        label.siblings(".ui-tree-toggler").click();
    });
});
</script>
于 2013-04-24T19:55:19.003 回答
0

p:tree元素能够处理 4 个事件:

+----------+-------------------------- --+-----------------+
| 活动 | 监听器参数 | 被解雇 |
+----------+-------------------------- --+-----------------+
| 展开 | org.primefaces.event.NodeExpandEvent | 当节点展开时。|
| 崩溃 | org.primefaces.event.NodeCollapseEvent | 当节点折叠时。|
| 选择 | org.primefaces.event.NodeSelectEvent | 选择节点时。|
| 取消选择 | org.primefaces.event.NodeUnselectEvent | 取消选择节点时。|
+----------+-------------------------- --+-----------------+

select 事件就是你想要的。

编辑:在树中使用复选框时,这将不起作用。

于 2012-10-23T06:41:55.350 回答
0

这就是我解决此问题的方法,只需在 treeNode 模板中添加一个复选框并将 selectionMode 更改为 single。

<p:tree value="#{treeBean.root}" var="node" dynamic="true" cache="false"  
            selectionMode="single"  selection="#{treeBean.selectedNode}" id="tree">  

        <p:ajax event="select" update=":form:messages" listener="#{treeBean.onNodeSelect}" />  

        <p:treeNode>  
            <p:selectBooleanCheckbox  id="treeCheck" value="#{node.selected}"/> 
            <h:outputText value="#{node.name}" />  
        </p:treeNode>  
    </p:tree>  

考虑到您必须手动编写逻辑来检查/取消选中父/子节点时应该。

谢谢。

于 2012-11-03T01:48:29.953 回答