如果选中复选框,则使活动组件生效



我想在选中h:selectBoolean复选框时激活h:selectOneMenu。

<h:selectBooleanCheckbox value="#{user.rememberMe}" /> I agree


<h:selectOneMenu value="#{user.favCoffee1}">
    <f:selectItem itemValue="Cream Latte" itemLabel="Coffee3 - Cream Latte" />
    <f:selectItem itemValue="Extreme Mocha" itemLabel="Coffee3 - Extreme Mocha" />
    <f:selectItem itemValue="Buena Vista" itemLabel="Coffee3 - Buena Vista" />
</h:selectOneMenu>

在我的情况下,我想让用户从h:selectOneMenu中选择值,只有当他选择这里接受网站条款时。

只需将另一个组件的 disabled 属性绑定到复选框值,并让复选框 ajax-update 另一个组件。

<h:selectBooleanCheckbox value="#{user.rememberMe}">
    <f:ajax render="menu" />
</h:selectBooleanCheckbox>
<h:selectOneMenu id="menu" ... disabled="#{not user.rememberMe}">
    ...
</h:selectOneMenu>

您只需要确保持有由 disabled(以及 renderedreadonly ) 属性绑定的属性的受管 Bean 具有视图作用域。参见 如何选择合适的 Bean 范围?

如果您想通过rendered属性显示/隐藏它,而不是通过disabled属性启用/禁用它,那么您需要将其包装在另一个组件中并 ajax-update 该包装器。参见 为什么当我想 ajax-update 时,我需要将一个带有 rendered="#{some}" 的组件嵌套在另一个组件中?

试试这个:

<h:selectBooleanCheckbox value="#{user.rememberMe}" onchange="submit()"/> I agree
<h:selectOneMenu value="#{user.favCoffee1}" disabled="#{not user.rememberMe}">
            <f:selectItem itemValue="Cream Latte"
                itemLabel="Coffee3 - Cream Latte" />
            <f:selectItem itemValue="Extreme Mocha"
                itemLabel="Coffee3 - Extreme Mocha" />
            <f:selectItem itemValue="Buena Vista"
                itemLabel="Coffee3 - Buena Vista" />
        </h:selectOneMenu>

相关内容

  • 没有找到相关文章

最新更新