【问题标题】:How do I avoid "Exception handling request to" javax.servlet.ServletException when redirecting?重定向时如何避免“异常处理请求”javax.servlet.ServletException?
【发布时间】:2022-01-05 03:27:19
【问题描述】:

如果会话超时,我的支持 bean 中有逻辑会重定向。

            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)

如何让视图停止加载此工作流程?很明显,由于发生了重定向,支持 bean 并没有加载所有内容,因此依赖于正在加载的此类对象的 EL 表达式失败了。

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

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    看起来您应该在请求中的属性上设置一些值,并且该页面使用该属性并将 nullPointer 异常显示为错误尝试 HttpServletRequest.setAttribute("bla", bla) 并检查它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2010-09-28
      • 2015-10-02
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      相关资源
      最近更新 更多