Jsf 重新启用p:commandButton不触发ajax
如果我启动一个commandButton disabled,AJAX事件即使在重新启用按钮后也不会触发Jsf 重新启用p:commandButton不触发ajax,jsf,primefaces,Jsf,Primefaces,如果我启动一个commandButton disabled,AJAX事件即使在重新启用按钮后也不会触发 <p:commandButton id="btnAJAX" value="AJAX" widgetVar="btnAJAX" disabled="true" action="#{bean.neverReached()}"/> <p:commandButton id="btnEnabler" value="Enable" oncomplete="btnAJAX.enable()
<p:commandButton id="btnAJAX" value="AJAX" widgetVar="btnAJAX" disabled="true" action="#{bean.neverReached()}"/>
<p:commandButton id="btnEnabler" value="Enable" oncomplete="btnAJAX.enable()"/>
此处识别的类似问题:
我使用的是PrimeFaces3.0.1和JDK1.7
有什么解决方案吗?您需要通过JSF而不是JavaScript/HTMLDOM来启用按钮。在表单提交的处理过程中,JSF还将在服务器端视图状态下验证按钮是否启用,作为防止篡改请求的一部分 例如 确保bean至少是
@ViewScoped
而不是@requestscope
,否则按钮的操作仍将失败,因为在表单提交请求期间重新创建了bean,因此enabled
属性将成为默认值,即false
另见:
@ViewScoped
而不是@requestscope
,否则按钮的操作仍将失败,因为在表单提交请求期间重新创建了bean,因此enabled
属性将成为默认值,即false
另见:
<p:commandButton id="btnAJAX" value="AJAX" action="#{bean.someAction}" disabled="#{!bean.enabled}" />
<p:commandButton id="btnEnabler" value="Enable" action="#{bean.enableButton}" process="@this" update="btnAJAX" />
private boolean enabled;
public void enableButton() {
enabled = true;
}
public boolean isEnabled() {
return enabled;
}