0

単純なログアウトを行っており、ログインルートを正しく参照していることを確認したいと思います。

<h:form>
  <h:commandLink value="Logout" action="#{request.contextPath}/#{userController.logout()}" />
</h:form>

しかし、私はこのエラーを受け取ります:

/topnav.xhtml @16,104 action="#{request.contextPath}/#{userController.logout()}" Not a Valid Method Expression: #{request.contextPath}/#{userController.logout()}

アップデート

現在、ログアウトリンクからログインページにナビゲーションルールを追加しています。ログアウトリンクはすべてのページにあるため、ログインページに戻るためのルールを追加する必要があります。これは、単純なアイテムの多くの構成のようです。ログインページが最終的な宛先であり、すべてのページからログインページへのナビゲーションエントリを配置する必要があることを示すメソッドを呼び出すことをお勧めします。

4

2 に答える 2

5

commandLinkのドキュメントから:

Name      Required  Request-time    Type
==============================================================
action    false     false           javax.el.MethodExpression 

複合式をMethodExpression#{request.contextPath}/#{userController.logout()}として解決することはできません。

JSF 2.1仕様では、MethodExpressionsについて次のように述べています。

メソッド式は値式に非常に似ていますが、プロパティの動的な取得と設定をサポートするのではなく、メソッド式は、任意のオブジェクトの任意のパブリックメソッドの呼び出し(つまり実行)をサポートし、指定されたパラメーターのセットを渡し、呼び出されたメソッドからの結果(存在する場合)。

于 2012-06-20T08:36:37.953 に答える
1

試す

<h:form>
  <h:commandLink value="Logout" action="#{userController.logout()}" />
</h:form>

コンテキストが必要ないという事実に加えて、使用#方法の2倍を使用することはできません。

于 2012-06-20T01:52:16.870 に答える