【问题标题】:Conditionally render a component based on selectOneMenu value根据 selectOneMenu 值有条件地渲染组件
【发布时间】:2017-02-22 08:34:14
【问题描述】:

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

【问题讨论】:

    标签: jsf selectonemenu conditional-rendering


    【解决方案1】:

    只需检查目标组件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>
    

    如果您想根据所选值执行一些业务逻辑,请使用&lt;f:ajax listener&gt;

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

    另见:

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 2015-06-28
      • 1970-01-01
      • 2020-05-16
      • 2021-03-23
      • 2022-01-10
      相关资源
      最近更新 更多