在xhtml页面上显示sendError消息

时间:2014-08-27 11:09:38

标签: jsf jsf-2

我的错误页面未显示senderror方法发送的错误消息。错误页面:

<h:head>
    <title>Error Page</title>
</h:head>
<h:body>
    <p>Error : #{requestScope['javax.servlet.error.message']}</p>
    <h:outputText value="#{requestScope['javax.servlet.error.message']}" />
</h:body>

我从过滤器

发送错误
((HttpServletResponse) response).sendError(-1, "You do not have a active session to access this page.");

呈现正确的页面,但我只能看到输出为:

Error : 

但是不会打印来自javax.servlet.error.message的错误消息。

1 个答案:

答案 0 :(得分:1)

这表明在错误页面请求中没有调用FacesServlet,而负责解析该XHTML文件中的所有JSF标记和EL表​​达式并生成HTML输出。要确认这一点,请在浏览器中右键单击错误页面并执行查看源;你不应该在那里看到任何JSF / EL的东西,而是纯JSF生成的HTML输出。

您需要确保<error-page><location>中的web.xml<url-pattern>中定义的FacesServlet的{​​{1}}相匹配。例如,如果您将其映射到web.xml的网址格式,则错误页面位置必须与/faces/*类似。否则,请将/faces/error.xhtml映射更改为FacesServlet,这样您就不必担心虚拟URL。

也就是说,*.xhtml 绝对不是一个有效的HTTP status code。 4xx范围内的东西更适合这个。例如。 -1400取决于您的身份验证方式。