1

我有一个带有 h:commandButton 作为提交按钮的 jsf 表单:

<h:form>
     <h:commandButton id="import_opener" binding="#{submit}" disabled="true" action="#{bean.save}" value="submit"/>
</h:form>

我尝试通过 JQuery 将“禁用”属性设置为 true(以启用按钮):

$("[id='#{submit.clientId}']").prop("disabled", false);

一切正常。但是当我提交 commandButton 时,动作 #{bean.save} 不会触发,只是重新加载表单页面。如果我不通过 JQuery 对 h:commandButton 进行操作,则该操作会触发。

请帮助我在 JQuery 更改 h:commandButton 的禁用属性后运行#{bean.save}。

4

1 回答 1

1

这是因为 JSF 有一些内置的安全特性。检查传入请求是否“可能”。传入的请求告诉 JSF 一个实际上被禁用的按钮已被按下。因此,该请求将被视为无效并被拒绝处理。这很好,因为可以通过多种方式操作浏览器。

解决方案是不设置disabled="true",而是让它在 JSF 端启用并通过 jQuery 禁用它,而不是相反。

于 2013-09-01T12:21:29.843 回答