根据当前视图处理 ViewExpiredException

发布于 2024-12-06 19:19:40 字数 358 浏览 1 评论 0原文

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

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

我正在使用 ViewScoped 支持 bean。

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

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

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

请帮我看看该怎么做。

I am using JSF 2.0 and Primefaces in my project.

I have two xhtml pages namely Cars.xhtml and Bikes.xhtml.

I am using ViewScoped backing beans.

Currently If get view expired exception from any of the two pages,im handling it in the web.xml.
through the error-page tag and directing to welcome.xhtml.

Now If i get a viewexpired exception from Bikes.xhtml
I need to direct to another page which is BikesHome.xhtml instead of welcome.xhtml.

If the exception is from Cars.xhtml, welcome.xhtml should be shown.

Please help me how to do.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

音盲 2024-12-13 19:19:40

我对此不是 100% 确定(因为我自己还没有尝试过),但这是我的建议 -
请查看在 JSF2 中优雅地处理 ViewExpiredException

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();

重定向。

I not 100% sure about this (because I haven't tried it myself) but here is my suggestion for -
Check this out Dealing Gracefully with ViewExpiredException in JSF2.

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

At this point you can get the view id as follows -

vee.getViewId();

And then based on the view id do the desired navigation.

NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
//check condition, set view       
nv.handleNavigation(facesContext, null, "/view-id?faces-redirect=true");
facesContext.renderResponse();

Or, I think you could also do -

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

to redirect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文