我有<p:selectOneMenu>
你选择一个关卡;填充了一个列表,当点击其中一个<f:selectItems>
然后点击<p:ajax>
时,我用另一个列表和条目更新我的<p:selectManyMenu>
。我希望它默认选择条目列表中的第一个元素并标记它,这不是发生的事情。
发生的是,它采用属性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>
selectManyMenu
<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>
中的第一个元素设为默认选择。
如果需要进一步澄清,请写 - 我将像鹰一样监视这个帖子。
答案 0 :(得分:2)
此问题与此处已解释和回答的理由相同:How can I populate a text field using PrimeFaces AJAX after validation errors occur?
在您的具体情况下,只需使用<p:ajax resetValues="true">
即可。您只需要确保<p:ajax update>
涵盖了需要重置的输入组件,<p:ajax process>
不会覆盖它们。