gpt4 book ai didi

jsf - Facelets错误页面在使用FullAjaxExceptionHandler进行ajax请求期间有效,但在同步请求期间不评估EL

转载 作者:行者123 更新时间:2023-12-03 08:12:52 25 4
gpt4 key购买 nike

我正在尝试使用Omnifaces库配置普通(非ajax)请求错误页面。我可以使用FullAjaxExceptionHandler并使用ajax请求错误及其页面,如演示所示。当我在正常请求中使用相同的错误页面时,将显示错误页面,但值将显示为源代码(例如,日期/时间:#{of:formatDate(现在,'yyyy-MM-dd HH:mm:ss ')}用户代理:#{header ['user-agent']} ..按原样显示在浏览器中)。

我正在使用Tomcat 7,JSF 2.2(MyFaces),Weld 2.6(用于CDI),Omnifaces 2.0和Primefaces 5.1。以下是相关代码。

这一页:

<h:commandButton value="Throw runtime exception on normal request"      
action="#{appbean.throwRuntimeException}"/>

<p:commandButton value="Throw runtime exception on AJAX request"
action="#{appbean.throwRuntimeException}"/>

bean :
public void throwRuntimeException() {
throw new RuntimeException("peek-a-boo");
}

faces-config:
<factory>
<exception-handler-factory>
org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory
</exception-handler-factory>
</factory>

web.xml:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>facesExceptionFilter</filter-name>
<filter-class>org.omnifaces.filter.FacesExceptionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>facesExceptionFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<error-page>
<exception-type>java.lang.RuntimeException</exception-type>
<location>/WEB-INF/errorpages/error2.xhtml</location>
</error-page>

最佳答案

<error-page><location>必须与FacesServlet映射匹配,以便在同步请求发生异常(不使用 FacesServlet ,但使用 ViewHandler#renderView() )期间也使RequestDispatcher#forward()在错误页面上运行。

相应地更改映射:

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

JSF 1.0/1.1就是使用 /faces/*(和 *.faces)。如果您确实出于某种原因需要保留 /faces/*(例如,具有已发布URL的现有Web应用程序),则只需使用两者(并相应地迁移301):
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

也可以看看:
  • JSF returns blank/unparsed page with plain/raw XHTML/XML/EL source instead of rendered HTML output
  • 关于jsf - Facelets错误页面在使用FullAjaxExceptionHandler进行ajax请求期间有效,但在同步请求期间不评估EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726461/

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