我正在尝试按照本教程为我的spring mvc项目创建一个通用的错误处理程序:http://www.mkyong.com/spring-mvc/spring-mvc-exceptionhandler-example/
但在我的项目中,我使用的是tile-defs,当我在浏览器中访问错误页面时出现此错误:
org.apache.tiles.request.render.CannotRenderException: Cannot render an attribute that is not a string, toString returns: null
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:255)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:397)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:238)
at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:221)
at org.apache.tiles.renderer.DefinitionRenderer.render(DefinitionRenderer.java:59)
at org.springframework.web.servlet.view.tiles3.TilesView.renderMergedOutputModel(TilesView.java:114)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1217)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
这是我的tiles-defs配置:
<definition name="/error/generic_error">
<put-attribute name="body" value="/WEB-INF/views/error/generic_error.jsp" />
<put-attribute name="browserTitle" value="Error Screen" />
</definition>
我无法找到问题的原因或解决方案,因此我们非常感谢您提供帮助。
答案 0 :(得分:4)
您需要在切片定义中添加基本模板。它应该扩展模板,或者你必须在你的定义<definition name="/error/generic_error" path= "{your-path}">