Spring - 如何处理异常

标签 spring velocity

我正在使用 Spring with Velocity。有时 velocity 会产生类似

的异常

Error in interpolating string literal : org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getMessage' in class org.springframework.web.servlet.support.RequestContext threw exception class org.springframework.context.NoSuchMessageException : No message found under code 'XX' for locale 'en_US'.

问题是 - 我可以指示 spring 抑制 NoSuchMessageException 吗?我是 Spring 的新手,所以不知道我是否可以创建一个异常处理程序,如果找不到消息,它不会抛出异常?在我的用例中,在 messages.properties 文件中找不到某些消息是一个有效的用例。

[编辑] - 我找到了一种方法 org.apache.velocity.app.event.MethodExceptionEventHandler 来为速度提供偶数处理程序。但是我不确定如何在 Spring 中注册它。

最佳答案

我认为,直接解决问题会更好,而不是试图抑制异常,这可能导致避免行为和未完成的操作。

但是,您没有告诉我们您希望系统在消息未针对给定代码定义的情况下如何响应。您想要一个空白字符串,还是应该将代码本身用作默认消息?

我假设在您的 Spring 上下文中的某处您定义了某种类型的 messageSource bean。这些 MessageSource beans 通常有一个属性 useCodeAsDefaultMessage。这默认为 false,但是当设置为 true 时,如果没有定义消息,它们将返回代码本身作为消息。

或者,您可以继承 MessageSource 类(无论您使用哪个),并覆盖 getDefaultMessage() 方法来处理无法解析代码的情况.

关于Spring - 如何处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926300/

相关文章:

java - 具有 apache 速度的模板递归结构

java - 尝试连接数据库失败后不要关闭应用程序 java.net.ConnectException 数据库 : Connection refused

java - 独立 Java 服务与 Tomcat8 通过 JMS 通信

velocity - 如何使用可追踪消息使 Velocity 模板处理失败

java - 如何使用 apache velocity 从列表中删除重复元素

速度模板不能替代方法

java - Spring 事务原子性到底意味着什么?

java - Spring - 两种不同的 POST 方法,具有相同的 URL,但生成的内容类型不同

使用注释的 Spring Integration 和 Spring Batch [Spring-Batch-Integration]

c# - nVelocity 中 if false 的语法是什么?