Jsf 基于selectOneMenu值有条件地渲染组件

Jsf 基于selectOneMenu值有条件地渲染组件,jsf,selectonemenu,conditional-rendering,Jsf,Selectonemenu,Conditional Rendering,是否有方法根据用户从selectOneMenu组件中选择的当前值渲染组件?我的selectOneMenu组件由一个枚举填充,该枚举由两个值组成:吸烟者和非吸烟者。如果用户选择了smoker,我希望在其下方显示一个复选框,该复选框允许用户检查他们每天吸烟的数量10、20、30+,等等。如果用户选择了非吸烟者,我也希望相反的方法起作用,即复选框不会呈现/消失。只需在目标组件的呈现的属性中检查下拉菜单的值,并通过更新它们的公共父项即可。以下是一个启动示例: <h:selectOneMenu va

是否有方法根据用户从selectOneMenu组件中选择的当前值渲染组件?我的selectOneMenu组件由一个枚举填充,该枚举由两个值组成:吸烟者和非吸烟者。如果用户选择了smoker,我希望在其下方显示一个复选框,该复选框允许用户检查他们每天吸烟的数量10、20、30+,等等。如果用户选择了非吸烟者,我也希望相反的方法起作用,即复选框不会呈现/消失。

只需在目标组件的
呈现的
属性中检查下拉菜单的值,并通过
更新它们的公共父项即可。以下是一个启动示例:

<h:selectOneMenu value="#{bean.item}">
    <f:selectItem itemValue="one" />
    <f:selectItem itemValue="two" />
    <f:selectItem itemValue="three" />
    <f:ajax render="results" />
</h:selectOneMenu>

<h:panelGroup id="results">
    <h:panelGroup rendered="#{bean.item eq 'one'}">
        You have selected "one".
    </h:panelGroup>
    <h:panelGroup rendered="#{bean.item eq 'two'}">
        You have selected "two".
    </h:panelGroup>
    <h:panelGroup rendered="#{bean.item eq 'three'}">
        You have selected "three".
    </h:panelGroup>
</h:panelGroup>
另见:
<f:ajax listener="#{bean.changeItem}" render="results" />
public void changeItem() {
    someResult = someService.getByItem(item);
}