PrimeFaces` <p:selectcheckboxmenu>`,<f:selectitems>`:更新值数组的长度会导致错误显示所选值

时间:2017-03-14 14:35:12

标签: jsf firefox primefaces jsf-2

我正在使用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])。

0 个答案:

没有答案