我正在使用PrimeFaces 6.0和JSF 2.2.14。我的网页包含<p:selectCheckboxMenu>
支持String[]
的相应@ManagedBean
。
附带的<f:selectItems>
由另一个String[]
支持,它始终返回先前结果的超集,即随着时间的推移而扩展。例如,如果最初只能选择[a, m, z]
,那么一段时间后可能会[a, b, c, m, n, o, z]
,依此类推。
作为一个例子来说明这个问题,当我选择前三个值并稍后重新加载页面时,我会看到最多六个(三个中的两个)所选条目。这些不会发送到托管bean,除非我明确选择/取消选择任何值,而是只显示在浏览器中。 (最多)六个选定的条目总是包括我最初设置的三个条目,另外还包括我选择条目时条目位置的条目。
在重新加载页面之前检查所有[a, m, z]
的示例中,[a, b, c, m, n, o, z]
是重新加载后的项目总列表,我得到[a, b, c, m, z]
被选中(前三个,和原始的[a, m, z
])。
现在,我的问题是:是否可能只选择托管bean中相应String[]
支持的项目,即使可选值(<f:selectItems>
)随着时间的推移而延长?
<h:form>
<p:selectCheckboxMenu id="menu" value="#{someView.selectedSegments}" label="Configure Segments" filter="true" filterMatchMode="startsWith" panelStyle="width:250px">
<f:selectItems value="#{someView.knownSegmentsSortedAlphabetically}"/>
<p:ajax event="toggleSelect"/>
<p:ajax/>
</p:selectCheckboxMenu>
</h:form>
我正在使用@ApplicationScoped
。如果没有这个,我只根据它们的位置(示例中为[a, b, c]
)获取条目,而不是我最初检查的条目(示例中为[a, m, z]
)。