3

現在、オンラインショッピングカート用のWebアプリケーションを作成しており、各jsfページでセッションを維持する必要があります。

私の質問は:

  1. 管理対象Beanでセッションを作成および破棄するにはどうすればよいですか?

  2. セッション変数に格納されている値にアクセスするにはどうすればよいですか?このような?

    FacesContext.getCurrentInstance().getExternalContext().getSessionMap.put("key",object);
    
  3. jsfでセッションを破棄するにはどうすればよいですか?

私も使用してセッションを破棄する必要がありますが、session.invalidate()失敗しました!!

4

1 に答える 1

6

マネージド Bean でセッションを作成および破棄するにはどうすればよいですか

自分で作成する必要はありません。サーブレットコンテナは、オンデマンドで自動的にそれを行います。つまり、ユーザー (または JSF) がセッション スコープでオブジェクトを設定する必要があるときはいつでも、サーブレット コンテナが自動的にセッションを作成します。JSF Web アプリケーションでは、これは次の場合に発生します。

  • @SessionScopedまたは@ViewScopedマネージド Bean を初めて参照します。
  • ExternalContext#getSession()で初めてセッションを取得しtrueます。
  • オブジェクトをExternalContext#getSessionMap()初めてセッション マップに保存します。
  • <h:form>状態保存方法が「サーバー」に設定されている状態で、初めてを含むページを返します。

でセッションを破棄できますExternalContext#invalidateSession()。例えば

public String logout() {
    FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
    return "login?faces-redirect=true";
}

セッションオブジェクトは現在のリクエストのレスポンスで引き続き利用できますが、次のリクエストでは利用できないため、後でリダイレクトを送信することを忘れないでください。


セッション変数に保存されている値にアクセスするにはどうすればよいですか?

@SessionScopedマネージドBeanのプロパティにするだけです。または、手動で を操作することもできExternalContext#getSessionMap()ます。はい。


jsfでセッションを破棄するにはどうすればよいですか

これは最初の質問ですでに回答されています。

以下も参照してください。

于 2013-01-07T01:08:50.597 に答える