在JavaScript 中设置disabled=true 后未调用JSF h:commandButton 的操作

2023-11-29

谁能解释一下以下行为?在 JavaScript 中禁用命令按钮时,操作方法永远不会执行。

<h:form>
    <h:commandButton value="test" action="#{bean.test}" onclick="disabled=true" />
</h:form>

当 HTML 表单元素被禁用时,它的name=value对不会作为 HTTP 请求参数发送,因此 JSF 永远不会在请求参数映射中找到它。对于命令按钮,这又意味着永远不会调用该操作。

您需要尽快禁用该按钮after表格已提交。建议使用的建议disabled属性没有任何意义,因为为时已晚。它在提交表单期间不会设置,但仅在响应返回时设置。

为了实现您的特定功能要求这个特定的这种情况下,你可以使用JS来超时禁用。

<h:commandButton ... onclick="setTimeout('document.getElementById(\'' + this.id + '\').disabled=true;', 50);" />

然而更好的是使用<f:ajax onevent>

也可以看看:

  • 用于防止重复提交的纯 Java/JSF 实现
  • 在执行操作之前重新加载页面的某些部分?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在JavaScript 中设置disabled=true 后未调用JSF h:commandButton 的操作 的相关文章

随机推荐