私は、この回答に記載されているViewHandlerでJSF 1.2を使用しています。IceFaces Session Expiry causes an exception例外が発生すると、ページが自動的に再生成され、公開ページに適しているため非常に便利でした。問題は、JSF 2.0と互換性がないことです。誰かがJSF 2.0やその代わりに使う方法を知っていますか?JSF 2.0 ViewExpiredException
編集:Stateless JSFを、私はJSF 1.2でやっていたようViewHandler
でそれを行うにはどのような方法があるかどうか、まだ迷っ:
私はこの解決策を見つけました。ここに私のJSF 2.0の現在のコードは次のとおりです。
public class AutoRegeneratorViewHandler extends GlobalResourcesViewHandler
{
public AutoRegeneratorViewHandler(ViewHandler viewHandler)
{
super(viewHandler);
}
@Override
public UIViewRoot restoreView(FacesContext p_oContext, String p_sViewID)
{
UIViewRoot oViewRoot = super.restoreView(p_oContext,p_sViewID);
try
{
if(oViewRoot == null)
{
initView(p_oContext);
oViewRoot = createView(p_oContext,p_sViewID);
p_oContext.setViewRoot(oViewRoot);
try
{
renderView(p_oContext,oViewRoot);
}
catch(IOException e)
{
e.printStackTrace();
}
System.out.println("Created : " + p_sViewID);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return oViewRoot;
}
}
このコードはViewExpiredException
を取り除くが、ページがロードされたとき、私がログインしていませんが表示されています。
テストケース:
- オープンサイト
- は(
web.xml
から)現在のセッションの有効期限よりも多くを待って - ユーザー名/パスワードを入力し、ヒットログインボタン
- ページをリロードログインフォームは空です
- ページを再読み込み
- ページの表示ようこそおよびログインフォームが表示されません(期待される動作)
なぜアプリケーションをJSF 2.0に移行できないのですか? http://stackoverflow.com/questions/4441713/migrating-from-jsf-1-2-to-jsf-2-0 – sfrj
私は既にJSF 2.0に移行しましたが、私が1.2で持っていた解決策はもう機能しません! –