我正在使用Primefaces和JSF来开发这个前端。我的问题是我的一个selectonemenus从未设置其值绑定,“selectedGroup”,因此第二个下拉列表从未填充。我的后备bean被调用来“更新”第二个selectonemenu,但是没有调用该ajax的监听器,也没有设置selectedGroup。此代码实际上与"Select"的展示相同。我甚至验证了展示代码从头开始工作(我毫不怀疑),但是没看到我的情况与那个例子有什么不同。
关于此主题的其他stackoverflow问题表明遗漏了一些内容,但这些建议都不符合我的问题。
我有两个selectOneMenus,就像这样。
<h:form id="outerForm">
<p:panel id="outerPanel">
<p:panelGrid id="outerPanelGrid">
<h:outputLabel for="groupSelection" value="Group: "/>
<p:selectOneMenu id="groupSelection" value="#{myBean.selectedGroup}" >
<p:ajax update="commandSelection"
listener="#{myBean.handleGroupSelection}" />
<f:selectItem itemLabel="---Please Select Group---" itemValue=""/>
<f:selectItems var="group" value="#{myBean.groups}"
itemLabel="#{group.name}" itemValue="#{group.name}" />
</p:selectOneMenu>
<h:outputLabel for="commandSelection" value="Command: "/>
<p:selectOneMenu id="commandSelection" value="#{myBean.command}">
<f:selectItems value="#{myBean.commandStringsList}"/>
</p:selectOneMenu>
</p:panelGrid>
</p:panel>
</h:form>
此页面显示在我的布局模板的“中心”部分,如此...
<ui:define id="content" name="content">
<p:panel id="contentPanel" style="float:left; border:none">
<ui:include src="#{anotherBean.currentView}.xhtml"/>
</p:panel>
</ui:define>
支持bean是否使用一些数据类来包含一些填充的数据,但我认为我正在做一切正确的事情以将其映射到视图中。但在大多数情况下,我使用的是字符串。
有人看到我错过的东西吗?至少,这个xhtml有效吗?
我还应该提一下,在我创建和使用模板之前,这个页面正在运行。基本上,我在tabview的选项卡中使用ui:include包含在index.xhtml的主体中。虽然我最初没有注意到,但是在我合并模板之后这个页面停止了工作(我知道测试不好)。
答案 0 :(得分:0)
<f:selectItems var="group" value="#{myBean.groups}"
itemLabel="#{group.name}" itemValue="#{group.name}" />
你不能用这种方式指定selectItems。翻译必须是双向的。使用转换器!
<f:selectItems var="group" value="#{myBean.groups}"
itemLabel="#{group.name}" itemValue="#{group}"
converter="groupConverter"/>