切换primefaces树 - 直接单击复选框选中复选框

时间:2017-09-14 14:59:22

标签: jsf checkbox primefaces tree

您好我使用组件Tree - Selection with variant Checkbox。 组件中的所有内容都工作正常但我需要在我的节点的每个子节点旁边放一个按钮以使该节点的id发生某些事情,问题是如果我按下取消选中该节点的按钮。 这是我的代码:

<p:tree value="#{puntoscontrolController.rootDevices}" var="dev"
                                selectionMode="checkbox" selection="#{puntoscontrolController.selectedDevNodes}" style="border: none;"
>
                            <p:ajax event="select" listener="#{puntoscontrolController.selectUnidad(dev)}" update="growl"/>
                            <p:ajax event="unselect" listener="#{puntoscontrolController.unselectUnidad(dev)}" update="growl"/>
                            <p:treeNode type="ruta" icon="fa fa-list-ol">
                                <h:outputText value="#{dev.ruta}"/>
                            </p:treeNode>
                            <p:treeNode type="unidad" icon="fa fa-bus" >
                                <h:outputText value="#{dev.nombre}"/>
                                <button onclick="centrar(#{dev.idTraccar});">→</button>
                            </p:treeNode>
                        </p:tree>

结果看起来像这样: Image of tree checkbox selection

问题是,如果我点击节点较暗区域内的任何内容,它会取消选中该节点,所以我的问题是我是否可以使复选框树使选择事件发生在复选框中,而不是在内部的事物中p:treenode?

我知道在以前的版本(例如3.4.1)中这是可能的,但我目前正在使用6.0版本,因为我需要一些新功能。

1 个答案:

答案 0 :(得分:0)

我决定通过@Kukeltje的建议阻止事件的传播。为此,我使用了这段代码:

onclick="centrar(#{dev.idTraccar});event.stopPropagation();"