我将 Spring MVC 3.0 与 sitemesh 和 spring 消息包一起使用。例如,我有以下内容:
<spring:message code="nav.item.name"/>
如果我的资源文件中不存在 nav.item.name ,我会在控制台中收到一个空白页和一个 JspTagException,我无法使用我的 @ExceptionHandler 方法捕获它们。我假设我无法捕捉到它,因为错误是视图渲染的一部分。我还尝试创建一个自定义 HandlerInterceptorAdapter,并修改 web.xml 都没有成功。有趣的是,我还使用了以下标签:
<fmt:message key="nav.item.name"/>
视图显示页面,但带有“?????????” 为文本。这实际上对我来说更容易接受,至少显示页面,但我宁愿使用 spring:message 标签。
我的问题是:如何捕获 JspTagException?
堆栈跟踪:
2011-10-12 09:31:16,155 错误 [http-8080-2] RequestContextAwareTag - 在区域设置“ko_KR”的代码“BLAH”下找不到消息。javax.servlet.jsp.JspTagException:在语言环境“ko_KR”的代码“BLAH”下找不到消息。在 org.springframework.web.servlet.tags.MessageTag.doStartTagInternal(MessageTag.java:184) 在 org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 在 org.apache.jsp.WEB_002dINF .pages.common.nav_jsp._jspx_meth_spring_005fmessage_005f0(nav_jsp.java:206) 在 org.apache.jsp.WEB_002dINF.pages.common.nav_jsp._jspService(nav_jsp.java:114) 在 org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.jasper.servlet.JspServletWrapper。
谢谢!戴夫