我正在使用Spring with Velocity。有时速度产生例外
插入字符串文字时出错:org.apache.velocity.exception.MethodInvocationException:在类org.springframework.web.servlet.support.RequestContext中调用方法'getMessage'抛出异常类org.springframework.context.NoSuchMessageException:否在代码'XX'下找到的有关区域设置'en_US'的消息。
问题是 - 我可以指示春天压制NoSuchMessageException
吗?我是Spring的新手,所以不知道我是否可以创建一个异常处理程序,如果找不到该消息,它将不会抛出异常?在我的用例中,它是一个有效的用例,没有在messages.properties
文件中找到一些消息。
[编辑] - 我找到了一种方法org.apache.velocity.app.event.MethodExceptionEventHandler
为速度提供偶数处理程序。但我不知道如何用Spring注册它。
答案 0 :(得分:2)
我认为,最好直接解决问题,而不是试图压制异常,这可能会导致避免行为和未完成的操作。
但是,在没有为给定代码定义消息的情况下,您没有告诉我们您希望系统如何响应。您想要一个空白字符串,还是代码本身应该用作默认消息?
我假设您在Spring上下文中的某个地方有一个已定义的某种messageSource
bean。这些MessageSource
bean通常具有属性useCodeAsDefaultMessage
。默认为false
,但设置为true
时,如果没有定义消息,它们将返回代码本身作为消息。
或者,您可以继承MessageSource
类(无论您使用哪个类),并覆盖getDefaultMessage()
方法以处理无法解析代码的情况。