2010-10-13 80 views
3

我正在使用Spring与速度。在倍速度产生像春天 - 如何处理异常

错误的异常在插值字符串文字:org.apache.velocity.exception.MethodInvocationException:方法的调用“的getMessage”类org.springframework.web.servlet.support.RequestContext抛出异常class org.springframework.context.NoSuchMessageException:代码'XX'中找不到地区'en_US'的消息。

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

[编辑] - 我找到了一个方法org.apache.velocity.app.event.MethodExceptionEventHandler提供一个甚至处理速度。然而,我不确定如何注册Spring。

回答

2

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

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

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

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