Seam pages.xml异常处理不会重定向到错误页面

时间:2014-03-17 06:56:57

标签: exception-handling seam

我在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中定义的其他页面重定向工作正常。

1 个答案:

答案 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.