我在seam&#39s的pages.xml中定义了以下内容
<page view-id="/view/Error.xhtml">
<end-conversation before-redirect="true" root="true" />
</page>
<exception class="my.custom.exceptions.exception.BaseException">
<redirect view-id="/view/Error.xhtml">
<message severity="FATAL">Please contact system administrator.</message>
</redirect>
</exception>
并在web.xml中关注过滤器
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我还在web.xml中禁用了Facelets开发模式,在components.xml中禁用了Seam调试模式
在用户插入服务类中,我抛出异常如下:
if(true) {throw new BaseException();}
但是,它只是在控制台上打印BaseException而不是重定向到错误页面。该页面仍在用户插入页面。我做错了什么?
编辑:我还尝试过基于注释的异常处理。这是代码。
@Redirect(viewId="/view/Error.xhtml", message="Unexpected error")
public class BaseException extends MyOwnRuntimeException {
除例外情况外,pages.xml中定义的其他页面重定向工作正常。
答案 0 :(得分:0)
将JBoss Seam库从 2.3.0Final 更新为 2.3.1Final ,问题解决了。即使Jboss doc说过,他们甚至不需要禁用Facelets开发模式和Seam调试模式:
You need to disable Facelets development mode in web.xml and Seam debug mode
in components.xml if you want your exception handlers to fire.