私がやろうとしているのは、単純なログアウト機能です。メイン ページはテンプレート ページを呼び出します。ヘッダーとコンテンツで構成されます。ヘッダーには、ログアウト ボタンが含まれています。ページには 2 つのフォームがあり、1 つはヘッダー (ログアウト ボタン) に、もう 1 つはコンテンツ (いくつかのボタン、リンクなど) にあります。
私の問題は、ログアウトリンクを最初にクリックしたときにページが更新され、2回目のクリック後にのみ続行することです。コンテンツフォーム内にプライムフェイスまたは ajax コードを含めると、問題が発生し始めます。その特定のコードを削除すると、ログアウトは意図したとおりに機能します。
メイン テンプレートのログアウト フォームtemplateUser.xhtml
:
<h:form id="logout">
<h:commandLink action="#{tenantController.customLogout(e)}"
id="logoutBtn" immediate="true" value="Logout" />
</h:form>
バッキング Bean:
public String customLogout(ActionEvent e) {
return "login.xhtml";
}
参考までに、customLogout メソッドもセッション破棄で構成されていますが、ここではページ リダイレクトを配置しました。
テンプレート クライアントでは、テンプレートは次のように指定されます。
<ui:composition template="/templateUser.xhtml">
JSFライブラリに関しては、現在jsf 2.0を使用しています
私が試した解決策:
immediate="true"
- フォームとコマンドリンクの両方に置く
id
(テンプレート フォームとコンテンツ フォーム) - use primefaces (
<p:commandLink>
with ajax false ==> this return to the before page; backed bean のメソッドは実行されていません。
以下は、私がここで試したいくつかのリンクです。