JSF 2.x <p:selectManyMenu>, <f:selectItems>, <p:selectOneMenu> 默认选择

JSF 2.x <p:selectManyMenu>, <f:selectItems>, <p:selectOneMenu> default selection

我有一个 <p:selectOneMenu> 供您选择级别;填充了一个列表,当单击其中一个 <f:selectItems> 然后使用 <p:ajax> 我用另一个列表更新我的 <p:selectManyMenu>,带有条目。我希望它默认 select 该条目列表中的第一个元素并标记它,但事实并非如此。

实际发生的是,它采用保存在属性 submittedValue 中的旧值并使用存储在该属性中的值,这在当前列表中不存在,因此未标记。

selectOneMenu

<p:selectOneMenu id="levelSelection" style="width:342px;text-align:left"
       panelStyle="width:180px"
       value="#{cc.attrs.agOptionObj.levelTemp}"
       onchange="onLevelSelectionChange(this), updateChild();"
       panelStyleClass="auto-close-panel"
       converter="lyngsoe.catellae.converter.LongOptionConverter"
       rendered="#{!cc.attrs.agOptionObj.hidePartitionSelection}">
           <f:selectItems
               value="#areaGroupSelection.getLevelsForHierarchy
                      (cc.attrs.agOptionObj,
                      cc.attrs.controller.model.periodSelectionOption,                        
                      cc.attrs.controller.reportName)}"
               var="levelOpt" 
               itemLabel="#{levelOpt.text}" 
               itemValue="#{levelOpt}"/>

           <p:ajax 
               update="levelEntries"
               listener="#{areaGroupSelection.levelChanged
                    (cc.attrs.agOptionObj,
                    cc.attrs.controller.model.periodSelectionOption)}"
               partialSubmit="true"/>
</p:selectOneMenu>

select许多菜单

<p:selectManyMenu id="levelEntries"
        value="#{cc.attrs.agOptionObj.entriesTemp}"
        style="width:342px;text-align:left;height:150px"
        onchange="onEntriesSelectionChange(this);"
        converter="lyngsoe.catellae.converter.StringOptionConverter"
        rendered="#{!cc.attrs.hidePartitionSelection}"
        required="true"
        requiredMessage="#{msg['areaGroupSelection.areaError']}">
            <f:selectItems
               value="#{areaGroupSelection.getHierarchyNodesAtLevel
                         (cc.attrs.agOptionObj,
                         cc.attrs.controller.model.periodSelectionOption)}"
               var="entryOpt" itemLabel="#{entryOpt.text}" itemValue="#               
                           {entryOpt}"/>
</p:selectManyMenu>

我已阅读并尝试了以下链接:

我不确定,我正在寻找的是使用其中之一:

澄清一下:我需要能够从我的 <p:selectOneMenu> 中进行选择,然后填充我的 <p:selectManyMenu> 并且让 <p:selectManyMenu> 中的第一个元素成为默认值 select编辑

如果需要任何进一步的说明,请写信 - 我将像鹰派一样监视此 post。

此问题的理由与此处已解释和回答的理由相同:How can I populate a text field using PrimeFaces AJAX after validation errors occur?

在您的具体情况下,只需使用 <p:ajax resetValues="true">。您只需要确保 <p:ajax update> 覆盖需要重置的输入组件,并且 <p:ajax process> 不覆盖它们。