选择一个selectOneMenu后,渲染其他selectOneMenu组件

时间:2011-11-25 17:33:19

标签: jsf jsf-2 el

我希望通过选择主<h:selectOneMenu>

显示多个<h:selectOneMenu>

不起作用的例子

<h:form id="selectForm">
    <h:selectOneMenu id="main" value="#{bean.main}">
         <f:selectItem itemValue="1" itemLabel="1"/>
         <f:selectItem itemValue="2" itemLabel="2"/>
         <f:selectItem itemValue="3" itemLabel="3"/>
         <f:selectItem itemValue="4" itemLabel="4"/>
         <f:ajax render="hotelSearch"/>
    </selectOneMenu>
    //this one is displayed if main is greater than 1
    <h:selectOneMenu id="2" rendered="main>1">
         <f:selectItem itemValue="1" itemLabel="1"/>
         <f:selectItem itemValue="2" itemLabel="2"/>
         <f:selectItem itemValue="3" itemLabel="3"/>
         <f:selectItem itemValue="4" itemLabel="4"/>
    </h:selectOneMenu>
    //this one is displayed if main is greater than 2
    <h:selectOneMenu id="3" rendered="main>2">
         <f:selectItem itemValue="1" itemLabel="1"/>
         <f:selectItem itemValue="2" itemLabel="2"/>
         <f:selectItem itemValue="3" itemLabel="3"/>
         <f:selectItem itemValue="4" itemLabel="4"/>
    </h:selectOneMenu>
</h:form>

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:6)

您需要将其设为有效的EL表达式#{}

更新:更新代码示例以反映新功能要求,使其无需托管bean即可使用)

<h:form id="selectForm">
    <h:selectOneMenu binding="#{mainMenu}">
        <f:selectItem itemValue="1" itemLabel="1"/>
        <f:selectItem itemValue="2" itemLabel="2"/>
        <f:selectItem itemValue="3" itemLabel="3"/>
        <f:selectItem itemValue="4" itemLabel="4"/>
        <f:ajax render="@form"/>
    </h:selectOneMenu>

    <h:selectOneMenu rendered="#{mainMenu.value gt 1}">
        <f:selectItem itemValue="1" itemLabel="1"/>
        <f:selectItem itemValue="2" itemLabel="2"/>
        <f:selectItem itemValue="3" itemLabel="3"/>
        <f:selectItem itemValue="4" itemLabel="4"/>
    </h:selectOneMenu>

    <h:selectOneMenu rendered="#{mainMenu.value gt 2}">
        <f:selectItem itemValue="1" itemLabel="1"/>
        <f:selectItem itemValue="2" itemLabel="2"/>
        <f:selectItem itemValue="3" itemLabel="3"/>
        <f:selectItem itemValue="4" itemLabel="4"/>
    </h:selectOneMenu>
</h:form>

请注意,我使用的是gt而不是>,因为它是XML中的非法字符。您可以在Java EE tutorial中找到所有EL运算符。

另见: