谁可以解释以下行为?在JavaScript中禁用命令按钮时,永远不会执行操作方法。
<h:form>
<h:commandButton value="test" action="#{bean.test}" onclick="disabled=true" />
</h:form>
答案 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)}"
在发送信息之后,在呈现组件时,此选项将起作用