2

有没有办法根据用户从 selectOneMenu 组件中选择的当前值来呈现组件?我的 selectOneMenu 组件填充了一个枚举,该枚举由两个值组成,吸烟者和非吸烟者。如果用户选择了吸烟者,我想在其下方呈现一个复选框,让用户检查他们在 10 天、20 天、30 天以上等天抽了多少烟。如果他们的用户选择了非吸烟者,我也希望相反的工作,即复选框不会呈现/消失。

4

1 回答 1

8

rendered只需检查目标组件属性中下拉菜单的值,并通过<f:ajax>. 这是一个启动示例:

<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>.

<f:ajax listener="#{bean.changeItem}" render="results" />
public void changeItem() {
    someResult = someService.getByItem(item);
}

也可以看看:

于 2012-11-19T13:28:45.267 回答