开发者

Generic error pages in webapp under jboss

Not a jsp/maven/java dev myself, i'm trying to configure error pages in a generic way, for a webapp, without touching jboss's configuration.

Here's how i'm trying to do so: in my web.xml, i've set up

    <error-page>
        <error-code>*</error-code>
        <location>/actions/erreur</location>
    </error-page>

Here, I doubt using '*' works, but that's for the example. Then, in my strut-config.xml

    <action path="/erreur" forward="er开发者_JS百科reurView" />

And finally in my tiles-def.xml:

<!-- ERREURS  -->
<definition name="erreurView" extends=".formPremiereConnexionLayout">
    <put name="titrePage" value="Erreur"/>  
    <put name="body" value="/jsp/erreurs.jsp"/>
</definition>

You get the idea, if you have an appropriate answer, thanks for the help.

One last thing : even though any server error code send to a generic error view, i'd like to detail the error in the jsp. I think a scriptlet would do fine, buyt once again, I have no idea on how to do so. Thanks.


The wildcard wouldn't work. How verbose, you really need to define the status codes of interest separately. E.g.

<error-page>
    <error-code>403</error-code>
    <location>/actions/erreur</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/actions/erreur</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/actions/erreur</location>
</error-page>
...

The last one listens on all exceptions/errors the server could throw. However you can't be sure if it will ever be displayed on a java.lang.Error.

Inside the error page you can get the important details from the request scope and headers like so:

<p>Request URI: <c:out value="${requestScope['javax.servlet.forward.request_uri']}" /></p>
<p>Exception type: <c:out value="${requestScope['javax.servlet.error.exception']}" /></p>
<p>Exception message: <c:out value="${requestScope['javax.servlet.error.message']}" /></p>
<p>HTTP status code: <c:out value="${requestScope['javax.servlet.error.status_code']}" /></p>
<p>HTTP user agent: <c:out value="${header['user-agent']}" /></p>

If you want to print the stacktrace as well, you'll have to prepare this inside a servlet/beanclass by writing it to a String and putting it in the request scope and finally display it in a <pre></pre>.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜