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

时间:2013-02-04 17:42:34

标签: jsf jsf-2 toggle commandbutton

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

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

1 个答案:

答案 0 :(得分:5)

只需拥有一个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不是必需的。您可以随意为这两个按钮添加<f:ajax>,以改善用户体验。

反过来非常需要@ViewScoped bean。一个@RequestScoped将在请求结束时被删除并在下一个请求中重新创建,从而导致boolean被重新初始化为默认值,因此在第二次点击后似乎无法工作,因为JSF将作为保护措施的一部分在实际调用操作之前,还要检查disabled(和rendered)属性。

另见: