我遇到使用primefaces selectOneMenu的问题。我有一个菜单从支持bean获取其selectItems值。菜单的容器由ajax更新。使用primefaces菜单,更新后所有项目都会丢失,使用标准JSF菜单,所有项目看起来都很好。
XHTML:
<p:outputPanel id="myContainer" widgetVar="myContainerVar">
<p:outputPanel rendered="#{somePresenter.renderBox}">
<h:selectOneMenu id="mySelectMenu"
converter="omnifaces.SelectItemsConverter"
value="#{somePresenter.someObject}">
<f:selectItems value="#{somePresenter.someObjectList}"
var="item" itemValue="#{item}" itemLabel="#{item}" />
</h:selectOneMenu>
<p:selectOneMenu id="mySelectMenuP"
converter="omnifaces.SelectItemsConverter"
value="#{somePresenter.someObject}">
<f:selectItems value="#{somePresenter.someObjectList}"
var="item" itemValue="#{item}" itemLabel="#{item}" />
</p:selectOneMenu>
</p:outputPanel>
</p:outputPanel>
<p:commandLink action="#{somePresenter.doIt()}" update="myContainer"
value="doIt!" />
豆:
@Getter
@Setter
private SomeObject someObject;
@Getter
@Setter
private Boolean renderBox = true;
public List<SomeObject> getObjectList(){
return objectBoundary.getList();
}
public void doIt(){ this.renderBox = !this.renderBox; }
首次显示页面时,两个菜单都填充了项目。但是,只要我关闭并打开容器(按两次命令链接),h:selectOneMenu看起来仍然正常,而p:selectOneMenu已丢失所有项目。
我使用googles开发人员工具仔细研究,两个菜单都有项目作为选项。 p菜单似乎没有正确呈现。
使用枚举而不是显示的对象时,我遇到了完全相同的问题。演示者是@Named和@ViewScoped。
我真的很感激任何帮助,因为我已经坚持了很长一段时间了。提前谢谢!
---编辑---
我正在使用Primefaces 4.0和JSF 2.2版
---编辑---
升级到PF 5.3会使菜单看起来略有不同: