0

私は JSF 1.2+RichFacesシステムに取り組んでいます。このシステムは一種のブログです。ユーザーはブログを作成して管理できます。ブログは、次の URL タイプでアクセスできます。

www.meublog.com/NameOfBlog

Managed Beanすべてのコントロールを作成するために、セッション スコープを持つシングルを使用しました。ユーザーがブログにアクセスすると、アクセスされているブログを識別する URL を介して、IDブログの をセッションに配置し、ブログ インデックスに転送するフィルターを使用します。このセッションを使用ManagedBeanして、ブログのビュー内のすべてを制御しました。問題は、ブラウザーが複数のタブ間で同じセッションを共有することです。ユーザーがwww.meublog.com/julio1 つのタブとwww.meublog.com/fulano別のタブでこのようにブログにアクセスすると、セッションが 1 つしか確立されていないため、2 つのブログを識別できません。

ここでたどる正しい道を誰かが知っているかどうか知りたいのですが...

4

1 に答える 1

1

まさに直面している理由から、リクエストスコープの情報をセッションスコープに保存しないでください。代わりに、リクエスト URI に基づいて初期化されるリクエスト スコープのマネージド Bean を使用します。リクエストの詳細のほとんどは、ExternalContextおよび/またはで取得できますHttpServletRequest

たとえば、Bean のコンストラクターまたは@PostConstructメソッド内:

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();

// If you use suffix mapping like *.jsf
String servletPath = ec.getRequestServletPath(); 

// Or if you use prefix mapping like /faces/*
String pathInfo = ec.getRequestPathInfo();

// Now initialize based on the value of either servletPath or pathInfo.

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

于 2012-05-24T22:09:59.910 に答える