4

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

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

4

1 回答 1

6

只需有一个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豆子又是非常必要的。一个@RequestScoped将在请求结束时被丢弃并在下一个请求中重新创建,从而导致boolean重新初始化为默认值,因此在第二次单击后似乎无法工作,因为 JSF 将作为防止篡改/黑客请求的一部分还检查disabled(和rendered) 属性在实际调用操作之前。

也可以看看:

于 2013-02-04T17:54:02.800 回答