这是我的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。
答案 0 :(得分:9)
与rendered
属性一样,JSF在处理表单提交期间重新评估服务器端的disabled
属性,作为防止篡改请求等的一部分。但是,您可以通过JS启用/禁用它,而无需通知服务器端更改。
每当您希望在处理表单提交期间启用按钮时,您需要确保disabled
属性的值在请求期间评估false
。例如,将其绑定到视图范围bean的boolean
属性,该属性由另一个按钮设置。
<h:commandButton disabled="#{bean.laughDisabled}" />