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

时间:2012-10-05 12:19:24

标签: javascript jsf commandbutton disabled-control

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

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

2 个答案:

答案 0 :(得分:2)

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

提交表单后,您需要在后立即停用该按钮。建议使用disabled属性的建议毫无意义,因为为时已晚。它在提交表单时没有设置,但仅在响应返回时设置。

要在此特定情况下实现您的特定功能需求,您可以使用JS来超时禁用。

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

然而,使用<f:ajax onevent>

会好得多

另见:

答案 1 :(得分:0)

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

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

在发送信息之后,在呈现组件时,此选项将起作用