我正在开发一个jsf,richfaces应用程序。我希望在选择第一个选项的基础上填充第二个选择菜单的值。如何实现这一点。
<h:outputText id="section1" value="Section" />
<h:selectOneMenu id="section2" value="#{content.sectionName}" >
<f:selectItems value="#{content.sections}" />
</h:selectOneMenu>
我想要的是: 我有两个表,一个用于分类,一个用于分区。 如果用户从下拉菜单中选择一个类别,则该部分的另一个下拉菜单应仅包含所选类别的值。
请他
答案 0 :(得分:2)
根据您的问题历史记录,您使用的是Ajax4jsf / RichFaces。最好使用<a4j:support>
代替valueChangeListener
。
<h:selectOneMenu id="section2" value="#{content.sectionName}" >
<f:selectItems value="#{content.sections}" />
<a4j:support event="onchange" action="#{content.changeSection}" reRender="otherMenuId" />
</h:selectOneMenu>
在changeSection()
方法中,您需要填充第二个菜单的选择项目。 otherMenuId
必须引用同一id
中其他<h:selectOneMenu>
的{{1}}。
答案 1 :(得分:0)
您必须为第一个valueChangeListener
定义selectOneMenu
:
<h:selectOneMenu id="select1" valueChangeListener="#{myBean.updateSections}">
<f:selectItems value="#{myBean.sections1}" />
</h:selectOneMenu>
在MyBean#updateSections
内,您必须根据您所做的选择修改第二个selectOneMenu必须显示的SelectItem列表。
此外,您必须提交表单或重新呈现第2部分,以在第2部分中显示更新的值。