0

我需要使用<h:commandButton type="submit">以下形式执行支持 bean 方法:

<h:form id="login" prependId="false" onsubmit="document.getElementById('login').action='j_security_check';">

    <h:commandButton type="submit">  

</h:form>

我尝试定义actionas well as actionListner,但是从不执行支持 bean 方法。我怎样才能做到这一点?

4

1 回答 1

0

它失败了,因为您将表单操作 URL 更改为非 JSF URL。该 URL 永远不会命中FacesServlet,因此它将无法解码、排队和调用命令按钮操作。完全摆脱该onsubmit属性(最好也摆脱prependId)。然后它将提交到正确的 JSF URL 并调用命令按钮操作。

<h:form id="login">

如果您打算使用 JSF 执行容器管理的身份验证,请前往以下答案:使用 j_security_check 在 Java EE / JSF 中执行用户身份验证以了解如何j_security_check在不需要 JSF 命令按钮操作的情况下正确使用,以及以编程方式执行此操作在 JSF 命令按钮操作方法中,而不是尝试直接提交到j_security_check.

顺便说一下,<h:commandButton type>默认值已经到了submit。只是不要重复默认设置并将其保留在您的代码之外以保持简短和干净。

于 2013-07-19T13:57:12.320 回答