2010-10-13 73 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()方法來處理代碼無法解析的情況。