jsf2-如何在jsf中创建切换按钮



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

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

只需在操作方法中反转一个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)属性,以防被篡改/黑客攻击的请求。

另请参阅:

  • 如何选择正确的bean作用域
  • commandButton/commandLink/ajax-action/listaner方法未调用或输入值未更新(第5点)

相关内容

  • 没有找到相关文章

最新更新