<p:commandbutton>最初在disable =“true”</p:commandbutton>时无法正常工作

时间:2011-12-27 17:16:16

标签: 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.");
   }

}

这是我的commandButton的工作版本:

<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。

1 个答案:

答案 0 :(得分:9)

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

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

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

另见: