这是我的 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/