次のようなナビゲーション ルールがあります。
<navigation-rule>
<display-name>forgotPwd</display-name>
<from-view-id>/login/forgotpwd.jsf</from-view-id>
<navigation-case>
<from-outcome>pass</from-outcome>
<to-view-id>/login/pwdresetcomplete.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>fail</from-outcome>
<to-view-id>/login/forgotpwd.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
そこで、ナビゲーション ルールをトリガーするために次のようにします。
- 案内する
/login/forgotpwd.jsf?uuid=fed8b3f7-ed33-4941-8306-3d2afbb8d1d0
このページには次の形式があります。
<h:form id="resetForm">
<!-- Omitting the login fields -->
<h:commandButton type="submit" id="resetPassword" value="Save" styleClass="btn small" action="#{registration.resetPassword}" >
<f:param name="uuid" value="#{facesContext.externalContext.requestParameterMap.uuid}" />
</h:commandButton>
</h:form>
(クエリ文字列パラメーターとして渡された uuid を受け取り、 registration.resetPassword 関数を呼び出します。)
registration.resetPassword Java コードは次のとおりです。
(簡潔にするために詳細は省略)
public String resetPassword() {
// If good
return "pass";
// If bad
return "fail"
}
問題: 「pass」を返すと、ナビゲーション ルールが起動しません。/login/pwdresetcomplete.jsf ではなく /login/forgotpwd.jsf に戻ります
これは、UUID パラメータが追加されているためですか? ナビゲーションが起動しないのはなぜですか?
これが機能しない理由を確認するためにトリガーできるlog4jログはありますか?