Jsf 根据当前视图处理ViewExpiredException

Jsf 根据当前视图处理ViewExpiredException,jsf,jsf-2,primefaces,viewexpiredexception,Jsf,Jsf 2,Primefaces,Viewexpiredexception,我在项目中使用JSF2.0和Primefaces 我有两个xhtml页面,即Cars.xhtml和Bikes.xhtml 我正在使用ViewScope支持bean 当前,如果两个页面中的任何一个出现get view过期异常,我将在web.xml中处理它。 通过错误页面标记并指向welcome.xhtml 现在,如果我从Bikes.xhtml获得一个viewexpired异常 我需要转到另一个页面BikesHome.xhtml,而不是welcome.xhtml 如果异常来自Cars.xhtml,则

我在项目中使用JSF2.0和Primefaces

我有两个xhtml页面,即Cars.xhtml和Bikes.xhtml

我正在使用ViewScope支持bean

当前,如果两个页面中的任何一个出现get view过期异常,我将在web.xml中处理它。 通过错误页面标记并指向welcome.xhtml

现在,如果我从Bikes.xhtml获得一个viewexpired异常 我需要转到另一个页面BikesHome.xhtml,而不是welcome.xhtml

如果异常来自Cars.xhtml,则应显示welcome.xhtml


请帮我怎么做。

我不是100%确定这一点(因为我自己没有尝试过),但这里是我的建议- 看看这个

if(ViewExpiredException的t实例){
ViewExpiredException vee=(ViewExpiredException)t;
此时,您可以按如下方式获得
视图id
-

vee.getViewId();
然后根据
视图id
执行所需的导航

NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
//check condition, set view       
nv.handleNavigation(facesContext, null, "/view-id?faces-redirect=true");
facesContext.renderResponse();
或者,我想你也可以-

FacesContext.getExternalContext().redirect(url);
FacesContext.responseComplete();

重定向。

关于共享链接中的筛选器的快速问题,当达到超时时,将自动调用handle()方法,这将强制页面重定向还是用户需要单击某个内容?