How do I have common error page templates with tiles in a Spring/MVC 3.0 app?

前端 未结 2 1236
心在旅途
心在旅途 2021-01-04 02:59

I have a Spring MVC/3.0 app using tiles as it\'s view, this is working fine however I can\'t figure out how to get the error pages to also use tiles.

I have in my

相关标签:
2条回答
  • 2021-01-04 03:32

    You need to add the "layouted" jsp in your web.xml. Below is the explaination code:

    // Your web.xml should look like this:
    <error-page>
      <error-code>404</error-code>
      <location>/WEB-INF/error/layout-404.jsp</location>
    </error-page>
    
    
    // Your layout-404.jsp should look like this:
    <%@page isELIgnored="false" %>
    <%@page contentType="text/html"%>
    <%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
    <tiles:insertDefinition name="404" />    
    
    
    // Your layout def should look like this:
    <definition name="404" extends="standardLayout">
      <put-attribute name="body" value="/WEB-INF/error/404.jsp" />
    </definition>
    
    0 讨论(0)
  • 2021-01-04 03:41

    It would be just simpler to define error template in tiles:

    <definition name="error/*" template="/views/error/layout.jsp">
        <put-attribute name="body" value="/views/error/{1}.jsp" />
    </definition>
    

    And handle that with Spring MVC, e.g.:

    @ExceptionHandler({ MissingResourceException.class })
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public String handleMissingResource(Exception e) {
        return "error/404";
    }
    

    In this case, you don't have to add error pages to your web.xml, and one .jsp file per error page will suffice.

    0 讨论(0)
提交回复
热议问题