由于primefaces组件celleditor不支持selectCheckboxMenu,因此我创建了一个自定义的selectCheckboxMenu以模拟此功能。我已经使用overlaypanel和selectManyMenu实现了它。外观与selectCheckBoxMenu相同,但是我面临着一个巨大的问题。当我尝试在树表中首次显示selectManyMenu时,selecteditems为0。这是因为该属性保存的所选项目已用空字符串更新。也许我可以举例说明它,因为我为树表中的每个孩子使用了相同的ID。我只对一个孩子和父母进行了测试,结果是相同的。也许,有一种更好的方法可以实现这一点。欢迎您提出所有建议和想法。
<ui:define name="content-center">
<h:form id="form">
<p:treeTable id="treetable" value="{selectManyView.getRoot()}" var="node"
selectionMode="checkbox"
nodeVar="treeNode" selection="#{selectManyView.selectedNodes}">
<p:column headerText="CalculationType">
<p:treeNode rendered="#{node.getNodeType().name() == 'Child'}" style="padding-left:24px;">
<h:outputText value="#{selectManyView.transformThemesToString(node)}"
id="calculationTypes" />
<p:commandLink onclick="PF('calc').show()">
<i class="ui-icon ui-icon-triangle-1-s ui-c"></i>
</p:commandLink>
<p:overlayPanel id="calcTypesPanel" hideEffect="fade"
style="width:auto;" widgetVar="calc">
<p:selectManyCheckbox value="#{node.calculationTypes}" >
<p:ajax event="change" listener="#{node.setSelectedCalculationTypes()}" update="calculationTypes"/>
<f:selectItems value="#{selectManyView.tableCalculationTypes()}"/>
</p:selectManyCheckbox>
</p:overlayPanel>
</p:treeNode>
</p:column>
</p:treeTable>
</h:form>
我希望selectManyMenu具有在托管bean中定义的selecteditem。