如何显示第二个h:selectOneMenu取决于第一个h:selectOneMenu?

时间:2011-08-03 13:32:52

标签: java jsf jsf-2 primefaces

我正在使用PrimeFaces的JSF 2.0。我使用两个<h:selectOneMenu>组件来表示两个下拉列表,我有以下功能要求:

  • 如果用户在第一个下拉列表中选择 Availibility Histogramme Availibility line 选项,则应显示第二个下拉列表。

  • 如果用户在第一个下拉列表中选择 Availibility Percentage ,则应隐藏第二个下拉列表。

我该怎么做?

以下是我目前观点的相关摘要:

<h:selectOneMenu value="#{bean.availabilityDisplay}" id="Display">
    <f:selectItem itemLabel="-- Select Display-- " itemValue="0"/> 
    <f:selectItems value="#{bean.getMyListDisplays()}"/>
</h:selectOneMenu>

<h:selectOneMenu value="#{bean.frequency}" id="frequency">
    <f:selectItem itemLabel="-- Select Frequency-- " itemValue="0"/> 
    <f:selectItems  value="#{bean.getMyListFrequency()}"/>
</h:selectOneMenu>

3 个答案:

答案 0 :(得分:0)

JSF2支持ajax,因此您可以将类似的内容附加到第一个selectBox

&lt; f:ajax event =“valueChange”rendered =“&lt;第二个选择框的ID&gt;”执行= “@这个”/&GT;

答案 1 :(得分:0)

(正如我们在PrimeFaces论坛上所讨论的那样)

将第二个项目包裹在输出面板中:

<h:selectOneMenu value="#{bean.availabilityDisplay}" id="Display">
    <f:selectItem itemLabel="-- Select Display-- " itemValue="0"/> 
    <f:selectItems value="#{bean.myListDisplays}"/>
    <f:ajax render="ajaxTarget" />
</h:selectOneMenu>

<p:outputPanel id="ajaxTarget">
    <h:selectOneMenu 
            value="#{bean.frequency}" id="frequency" 
            rendered="#{bean.availabilityDisplay == 2 or bean.availabilityDisplay == 4}">
        <f:selectItem itemLabel="-- Select Frequency-- " itemValue="0"/> 
        <f:selectItems  value="#{bean.myListFrequency}"/>
    </h:selectOneMenu>
</p:outputPanel>

答案 2 :(得分:0)

http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=ajax&sample=selectsUpdates&skin=blueSky 您可以将#{not empty bean.availabilityDisplay}用于渲染属性