加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jsf – 重新启用p:commandButton不激活ajax

发布时间:2020-12-16 03:12:50 所属栏目:百科 来源:网络整理
导读:如果我启动了commandButton禁用,即使重新启用按钮,AJAX事件也不会触发. p:commandButton id="btnAJAX" value="AJAX" widgetVar="btnAJAX" disabled="true" action="#{bean.neverReached()}"/p:commandButton id="btnEnabler" value="Enable" oncomplete="btn
如果我启动了commandButton禁用,即使重新启用按钮,AJAX事件也不会触发.
<p:commandButton id="btnAJAX" value="AJAX" widgetVar="btnAJAX" disabled="true" action="#{bean.neverReached()}"/>
<p:commandButton id="btnEnabler" value="Enable" oncomplete="btnAJAX.enable()"/>

类似的问题在这里标识:http://forum.primefaces.org/viewtopic.php?f=3&t=7817

我使用的是primefaces 3.0.1和JDK 1.7

这有什么解决方案吗?

您需要通过JSF启用按钮,而不是通过JavaScript / HTML DOM启用.在处理表单提交期间,JSF将在服务器端视图状态中验证是否启用了按钮,作为防止篡改请求的一部分.

例如.

<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;
}

确保bean至少是@ViewScoped而不是@RequestScoped,否则按钮的操作仍然会失败,因为在表单提交请求期间重新创建了bean,因此enabled属性将成为默认值,即false.

也可以看看:

> commandButton/commandLink/ajax action/listener method not invoked or input value not updated

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读