JSF H的行动:没有的commandButton设置禁用= TRUE在JavaScript调用后(

2019-10-17 07:06发布

谁可以解释以下行为吗? 当禁用在JavaScript命令按钮,从不执行的操作方法。

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

Answer 1:

当HTML表格元素被禁止,则其name=value对将不被发送作为HTTP请求参数并因此JSF绝不会发现它在要求参数映射图。 对于命令按钮,这反过来又意味着,行动永远不会被调用。

你需要禁用表单提交不久按钮。 所提出的建议,使用disabled属性并没有什么意义,因为它是为时已晚。 它提交表单时没有设置,但它只是设置响应返回时。

为了实现在这种特殊情况下你的特殊功能需求,可以使用JS超时的残疾。

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

好得多然而,使用<f:ajax onevent>

也可以看看:

  • 纯Java / JSF实现双提交预防
  • 在执行操作前重新加载页面的部分?


Answer 2:

尝试使用属性的组件的“禁用”禁用从BackBean按钮

disabled="#{!(bean.disable)}"

当组件被渲染此选项将工作,发送的信息后,



文章来源: Action of JSF h:commandButton not invoked after setting disabled=true in JavaScript