gpt4 book ai didi

jsf - 根据当前 View 处理 ViewExpiredException

转载 作者:行者123 更新时间:2023-12-04 21:40:56 26 4
gpt4 key购买 nike

我在我的项目中使用 JSF 2.0 和 Primefaces。

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

我正在使用 ViewScoped 支持 bean。

当前如果从两个页面中的任何一个获取 View 过期异常,我会在 web.xml 中处理它。
通过错误页面标记并定向到welcome.xhtml。

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

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

请帮我怎么做。

最佳答案

我对此不是 100% 确定(因为我自己还没有尝试过)但这是我的建议 -
看看这个 Dealing Gracefully with ViewExpiredException in JSF2 .

if (t instanceof ViewExpiredException) {
ViewExpiredException vee = (ViewExpiredException) t;

此时可以得到 view id如下 -
vee.getViewId();

然后基于 view 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();

重定向。

关于jsf - 根据当前 View 处理 ViewExpiredException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com