【问题标题】:How can I create toggle buttons in JSF?如何在 JSF 中创建切换按钮?
【发布时间】:2013-01-19 11:34:30
【问题描述】:

如何在 JSF 中创建切换按钮?

基本上,我需要两个按钮“输入”和“输出”。它们本质上调用了同一个托管 bean,但是由于每次单击都应该禁用一个,启用另一个,反之亦然。如何才能做到这一点?我应该使用 ajax 功能吗?

【问题讨论】:

    标签: jsf jsf-2 toggle commandbutton


    【解决方案1】:

    只需有一个 boolean 属性,您可以在操作方法中反转该属性,并在两个按钮的 disabled 属性中完全使用该属性,反转。

    启动示例:

    @ManagedBean
    @ViewScoped
    public class Bean {
    
        private boolean enabled;
    
        public void toggle() {
            enabled = !enabled;
        }
    
        public boolean isEnabled() {
            return enabled;
        }
    
    }
    

    <h:form>
        <h:commandButton value="Enable" action="#{bean.toggle}" disabled="#{bean.enabled}" />
        <h:commandButton value="Disable" action="#{bean.toggle}" disabled="#{not bean.enabled}" />
    </h:form>
    

    Ajax 在技术上不是必需的。随意在两个按钮上添加&lt;f:ajax&gt; 以改善用户体验。

    @ViewScoped bean 反过来是非常必要的。 @RequestScoped 将在请求结束时被丢弃并在下一个请求中重新创建,从而导致 boolean 重新初始化为默认值,因此在第二次单击后似乎无法工作,因为 JSF 将作为防止篡改/黑客攻击的一部分在实际调用操作之前,请求还会检查disabled(和rendered)属性。

    另见:

    【讨论】:

    • 您好 BalusC,感谢您的回答。我在我的代码中使用了它,其中动作切换例程也由 selectOneMenu 调用(即按钮和菜单更新值决定我的操作)。在这种情况下,切换失败。知道如何设置吗?
    • 很难在没有看到具体代码的情况下回答。按 提出一个新问题并将SSCCE 风格的代码放入其中。
    猜你喜欢
    • 2016-03-05
    • 2013-12-27
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2014-06-02
    • 2010-09-23
    • 2021-12-04
    • 2018-12-16
    相关资源
    最近更新 更多