你好我是JSF冰面的新手,我坚持一点。
我在树中有checkboxButton。复选框具有关联的动作侦听器。 问题是仅针对顶级复选框(在根节点处)调用操作侦听器,而不是针对位于树的子级或叶级的复选框。我错过了什么吗?
<ace:tree var="treeNode" value="#{clientUserAdmin.segmentationTree}" expansion="true" selection="false" reordering="false"
rendered="#{!empty clientUserAdmin.clientAccessSelectList and !clientUserAdmin.currentProfile.allSegmentations and user.currentProject.isSegmentationManual}" >
<ace:node>
<h:panelGroup style="display: inline">
<ace:checkboxButton partialSubmit="true"
value="#{treeNode.userObject.treeNodeSelected}"
valueChangeListener="#{clientUserAdmin.onSegmentationAccessChange}"
styleClass="#{treeNode.userObject.classStyle}"
disabled="#{treeNode.userObject.checkBoxDisabled}" >
<ace:ajax execute="@this" render="@all" />
</ace:checkboxButton>
</h:panelGroup>
<h:panelGroup style="display: inline">
<h:outputText value="#{treeNode.userObject.text}"
styleClass="#{treeNode.userObject.classStyle}" />
</h:panelGroup>
</ace:node>
</ace:tree>
我可以看到请求被发送到服务器,并且总是为每个复选框值更改执行onSuccess。但永远不会为子节点复选框调用值更改侦听器。
提前致谢
答案 0 :(得分:0)
我无法找到原始问题的解决方案。
我更改为我的代码使用h:selectBooleanCheckbox而不是ace:checkboxButton
而不是ace:ajax execute =“@ this”render =“@ all”,我改为 f:ajax event =“click”execute =“@ form”render =“@ form”
现在它按预期工作了。如果有人能够解释正在发生的事情,那将是一个很大的帮助。
感谢。