我如何避免";异常处理请求到";重定向时出现javax.servlet.ServletExcepti



我的backingbean中有一个逻辑,它在会话超时时重定向。

FacesContext.getCurrentInstance().getExternalContext().setResponseStatus(responseCode);
FacesContext.getCurrentInstance().getExternalContext().setResponseHeader("Location", redirectURL);
FacesContext.getCurrentInstance().responseComplete();

然而,正在加载的页面仍然尝试渲染,并抛出以下错误:

2021-11-27 08:02:50,774 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /dashboard/mypage.htm: javax.servlet.ServletException
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:236)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:294)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
Caused by: java.lang.NullPointerException
at javax.el.ELUtil.buildParameters(ELUtil.java:699)
at javax.el.ELUtil.invokeMethod(ELUtil.java:243)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:338)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:198)
at com.sun.el.parser.AstValue.getValue(AstValue.java:111)
at com.sun.el.parser.AstValue.getValue(AstValue.java:179)
at com.sun.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:39)
at com.sun.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:44)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:202)
at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:93)
at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:372)
at org.primefaces.component.menuitem.UIMenuItemBase.getUrl(UIMenuItemBase.java:91)
at org.primefaces.renderkit.MenuItemAwareRenderer.encodeOnClick(MenuItemAwareRenderer.java:67)
at org.primefaces.component.menu.BaseMenuRenderer.encodeMenuItem(BaseMenuRenderer.java:111)
at org.primefaces.component.menu.BaseMenuRenderer.encodeMenuItem(BaseMenuRenderer.java:69)
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeElements(TieredMenuRenderer.java:124)
at org.primefaces.component.menubutton.MenuButtonRenderer.encodeMenu(MenuButtonRenderer.java:147)
at org.primefaces.component.menubutton.MenuButtonRenderer.encodeMarkup(MenuButtonRenderer.java:68)
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:50)

如何使视图停止加载此工作流?很明显,自从重定向发生以来,backingbean并没有加载所有内容,因此依赖于加载此类对象的EL表达式正在失败。

我不想生成错误,因为这会让我的管理员因为生成的错误电子邮件而感到悲伤。他们无法判断这是否是一个真正的错误。

看起来你应该在请求中的属性上放一些值,而该页面使用该属性并显示nullPointer异常作为错误。请尝试HttpServlet请求.setAttribute("bla",bla(并检查它。

最新更新