2010-11-30 14 views
0

私たちのアプリケーションでは、セッションが期限切れになった後、 をユーザにリダイレクトするために を持っています。私はログアウトしたマネージドBeanをマネージドBeanプロパティとして保持しているホームページのパスが必要ですしかし、セッションが終了した後、nullポインタ例外が発生します(マネージドBeanがnullになります)。 私は代わりに(つまり)ログアウトクラスを手動で作成し、その時点でプロパティにアクセスしようとしました私がアクセスしたいプロパティはnullになります。 そのプロパティにアクセスできますか? 私を助けてください。 ありがとうございます。これを行うためのManaged Beanが作成してBeanのプロパティを作成すると、

+0

ホームページのパスを動的なものとして取得する必要があるため、ホットコード化されていません。管理されたプロパティとして保持したいだけです。 –

答えて

1

前の回答に加えて:

あなたは(web.xmlに)代わりに、セッション属性の

<error-page> 
<exception-type>javax.faces.application.ViewExpiredException</exception-type> 
<location>viewexpired.jsp</location> 
</error-page> 

またはコンテキストパラメータを使用することができます。それはセッションから独立したままになりますので、あなたのBeanの

<managed-bean-scope>application</managed-bean-scope>  

するか、(顔-のcontext.xmlに)を使用します。を参照してください。

1

正しい方法は、javax.faces.context.ExceptionHandlerFactoryをサブクラス化し、その後javax.faces.context.ExceptionHandlerWrapperの実装でhandle()メソッドをオーバーライドし、工場を実装し、顔-config.xmlに例外ハンドラファクトリを宣言しています。 この場合、ViewExpiredExceptionクラスの例外を分析して、ビューの期限切れページにリダイレクトする必要があります。

+0

こんにちはイワノフ、我々は私たちのアプリケーションで同じを使用している。しかし、問題はエラーページにリダイレクトだけです。私のアプリケーションはエラーページにリダイレクトします。しかし、ページが読み込まれていません。 –

+0

server.xmlにemptysessionPath = trueを追加することで、私はその動作を得ることができます。 –