【问题标题】:JSF 2.0 ViewExpiredExceptionJSF 2.0 ViewExpiredException
【发布时间】:2011-10-05 13:36:46
【问题描述】:

我一直在将 JSF 1.2 与此答案中描述的 ViewHandler 一起使用:IceFaces Session Expiry causes an exception 它非常有用,因为当异常发生时,页面会自动重新生成,这对公共页面很有用。问题是它与 JSF 2.0 不兼容。有人知道如何让它在 JSF 2.0 或替代品中工作吗?

编辑:

我找到了这个解决方案:Stateless JSF,但仍然想知道是否有任何方法可以通过 ViewHandler 来解决,就像我在 JSF 1.2 中所做的那样。这是我的 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 richfaces viewexpiredexception


【解决方案1】:

我认为 JSF2 的方式是提供您自己的异常处理程序。

在异常处理程序中,可以循环所有未处理的异常,检查 ViewExpiredException 并将其删除。

甚至可以填充请求参数并导航到特定的 facelet,这可以呈现正确且信息丰富的页面,该页面使用从异常处理程序填充的请求参数。如果需要,甚至可以导航到登录屏幕。

这是一个这样的article 描述如何实现它。

【讨论】:

  • 当然这是一个好方法,但是在登录屏幕的上下文中,您只有在浏览器中打开它的时间超过超时,当您填写用户名/密码框并点击登录按钮时,它变成了一个 ViewExpiredException...
猜你喜欢
  • 2012-09-04
  • 2011-01-08
  • 2011-09-03
  • 2011-10-25
  • 2011-02-28
  • 2011-03-18
  • 2012-01-09
  • 2015-05-08
  • 2013-03-19
相关资源
最近更新 更多