1

index.xhtmlアプリケーションのランディング ページであるファイルがあります。

次のメソッドを呼び出すログアウトボタンがあります。

public String logout() {
    FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
    return "logout";
}

index.xhtml次に、 からページに転送しますfaces-config.xml。ただし、ログアウトをクリックしてindex.xhtmlページに到達すると、CSS やデザインがなく、ページが歪んでいます。

どこが間違っていますか?

4

1 に答える 1

1

標準的なアプローチは、セッションの無効化後にリダイレクトを送信することです。そうしないと、現在のリクエストの応答に古いセッション変数が引き続き存在します。

昔ながらの JSF ナビゲーション ケースを使用している場合は、追加するだけです。

<redirect />

ナビケースに入れます。

ただし、ExternalContext#invalidateSession()コンパイルする必要があるということは、JSF 2.x を使用していることを意味します。その場合、ナビゲーションケースのボイラープレートを必要とせずに、暗黙的なナビゲーション機能を利用することもできます:

return "/index.xhtml?faces-redirect=true";

それでも問題が解決しない場合は、ログインしているユーザーが見つからない場合に、CSS (および JS と画像) リソースを過度にブロックする独自のサーブレット フィルターが原因である可能性があります。しかし、この問題はログアウト機能とは関係ありません。まったくログインしていないときに、すでにまったく同じ問題が発生していたはずです。

于 2013-05-10T16:45:59.780 に答える