在我们使用PrettyFaces 2.0.12.Final的应用程序中,我们在pretty-config.xml中设置了重定向。
<url-mapping id="foo">
<pattern value="/foo/#{alias}" />
<view-id value="/foo.xhtml" />
</url-mapping>
我们在web.xml中设置了自定义404页面。
<error-page>
<error-code>404</error-code>
<location>/404.xhtml</location>
</error-page>
当用户收到404 Not Found错误时,对于foo&#34;别名&#34;如果不存在,则会将其重定向到&#34; /404.xhtml" ;,并且浏览器网址栏不会保留违规地址。
有没有办法维护&#34; / foo / aliasdoesnotexist&#34;的网址?在浏览器URL栏中仍然显示404页面?
答案 0 :(得分:1)
处理此方案的一种方法是在应用程序中处理异常并执行内部转发到错误页面:
您可以为404页面设置PrettyFaces映射:
<url-mapping id="foo">
<pattern value="/foo/#{alias}" />
<view-id value="/foo.xhtml" />
</url-mapping>
然后在您的应用程序代码中:
catch ( Exception e )
{
String contextName = FacesContext.getCurrentInstance().getExternalContext().getContextName();
FacesContext.getCurrentInstance().getExternalContext().dispatch(contextName + "/404");
}
如果要全局捕获异常,则需要创建一个servlet过滤器来执行此操作。有关如何创建捕获所有异常的过滤器,请参阅以下主题:
how do I catch errors globally, log them and show user an error page in J2EE app
希望这有帮助!
〜林肯