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 web.xml
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/error/404.jsp</location>
</error-page>
which works fine as an ordinary view NOT using tiles, however when I change the location to one of the view names, the view is not found and renders the ordinary error page.
My tiles.xml
file for the view contains the following definition
<definition name="404" extends="standardLayout">
<put-attribute name="body" value="/WEB-INF/error/404.jsp" />
</definition>
I'm configuring tiles through spring as follows:
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/**/tiles.xml</value>
</list>
</property>
</bean>
I'm suspecting this is all due to the view not coming from spring itself?
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>