我在使用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!" />

beans :

@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菜单似乎没有正确呈现 .

Weird OneMenu behaviour

使用枚举而不是显示的对象时,我遇到了完全相同的问题 . 演示者是@Named和@ViewScoped .

我真的很感激任何帮助,因为我已经坚持了很长一段时间了 . 先感谢您!

---编辑---

我使用的是Primefaces 4.0和JSF 2.2版

---编辑---

升级到PF 5.3会使菜单看起来略有不同:

Slightly different menu after upgrade to PF 5.3