jsf - <p :commandButton> not working when disable ="true" initially

标签 jsf button primefaces

这是我的 ManagedBean:

@Named(value = "mrBean")
@RequestScoped
public class MrBean {

   public void laugh() {
      System.out.println("HAHAHA");
   }

   public void prepareToLaugh() {
      System.out.println("Drink water.");
   }

}

这是我的命令按钮的工作版本:

<p:commandButton actionListener="#{mrBean.laugh}" widgetVar="laughtButton"
                 value="Laugh" oncomplete="laughButton.disable();"  />

当我点击上面的按钮时,我看到 HAHAHA 并且该按钮被禁用。但是,当我将laughButton 的disable 属性设置为true 时,按钮不再起作用:

<p:commandButton actionListener="#{mrBean.laugh}" widgetVar="laughtButton"
                 value="Laugh" disabled="true" oncomplete="laughButton.disable();"  />

<p:commandButton actionListener="#{mrBean.prepareToLaugh}"
                 value="Prepare to laugh" oncomplete="laughButton.enable();" />

当我单击第二个按钮时,我看到 Drink water 并且启用了第一个按钮。但是,当我点击第一个按钮时,什么也没有发生。

如果有人能就如何解决这个问题给我建议,我将不胜感激。我正在使用 PrimeFaces 3.0 RC2。

最佳答案

rendered 属性一样,JSF 在处理表单提交期间重新评估服务器端的 disabled 属性,以防止被篡改请求等。但是,您正在通过 JS 启用/禁用它,而不通知服务器端更改。

只要您希望在处理表单提交期间启用按钮,您就需要确保 disabled 属性的值在请求期间评估 false。例如,将其绑定(bind)到由另一个按钮设置的 View 范围 bean 的 boolean 属性。

<h:commandButton disabled="#{bean.laughDisabled}" />

另见:

关于jsf - <p :commandButton> not working when disable ="true" initially,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647315/

相关文章:

android - 如何在 Android 中将 TextView 的文本转换为位图?

JSF 2.2小时:inputFile not working with pretty faces

ajax - 通过ajax渲染其他表单会导致其 View 状态丢失,如何将其添加回来?

jsf - 如何将选定的行传递到 dataTable 或 ui :repeat? 内的 commandLink

javascript - 选择后重定向按钮

java - PrimeFaces 对话框保留以前的值

JSF 操作方法未被调用

swift - 应用程序正在从后台线程错误修改自动布局引擎

jsf-2 - 使用多重排序的 PrimeFaces 数据表的初始排序顺序

java - 如何在 primefaces 列中水平对齐按钮?