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

JSF h的操作:在JavaScript中设置disabled=true后未调用commandButton,javascript,jsf,commandbutton,disabled-control,Javascript,Jsf,Commandbutton,Disabled Control,谁能解释以下行为?在JavaScript中禁用命令按钮时,永远不会执行action方法 <h:form> <h:commandButton value="test" action="#{bean.test}" onclick="disabled=true" /> </h:form> 尝试使用组件的属性“disabled”从BackBean禁用按钮 disabled="#{!(bean.disable)}" 当呈现组件时,在发送信息后,此选项将起作用

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

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

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

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

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

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

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

当呈现组件时,此选项将起作用,当HTML表单元素被禁用时,发送信息后,其
name=value
对将不会作为HTTP请求参数发送,因此JSF将永远不会在请求参数映射中找到它。对于命令按钮,这意味着永远不会调用该操作

您需要在表单提交后不久禁用该按钮。建议使用
disabled
属性没有任何意义,因为为时已晚。它不是在提交表单时设置的,而是在响应返回时设置的

为了在这种特殊情况下实现特定的功能需求,可以使用JS来超时禁用


不过,使用

另见:

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

您需要在表单提交后不久禁用该按钮。建议使用
disabled
属性没有任何意义,因为为时已晚。它不是在提交表单时设置的,而是在响应返回时设置的

为了在这种特殊情况下实现特定的功能需求,可以使用JS来超时禁用


不过,使用

另见:

尝试使用
action=“#{bean.test}”
在操作发生之前不能禁用该按钮。JSF将检查按钮是否被禁用,并且不会启动该操作。好的,我知道了,谢谢!您可能会添加此作为答案,因为这可能是我问题的正确答案…@membersound BalusC答案正确,我的答案错误。请接受他的回答。尝试使用
action=“#{bean.test}”
在操作发生之前,不能禁用按钮。JSF将检查按钮是否被禁用,并且不会启动该操作。好的,我知道了,谢谢!您可能会添加此作为答案,因为这可能是我问题的正确答案…@membersound BalusC答案正确,我的答案错误。请接受他的回答。