我想使用Spring本地化從POJO類拋出的異常消息。我有一個Spring MVC應用程序,我可以通過它來添加書籍。如果添加的書的標題爲空,則實現類將引發一個異常。我想將其本地化。使用Spring本地化異常消息
我知道我可以在JSP頁面中使用localeResolvers,並且我已經完成了。我可以利用這個來獲取POJO中的本地化錯誤消息嗎?如果是的話,我該如何將Cookie/Session設置的區域設置解析器(Cookie或Session)或區域設置注入到POJO類中?
addBook方法引發異常
public void addBook(IBook book) throws Exception {
if (book.getTitle() == null || book.getTitle() == "") {
throw new Exception("Title is null");
}
我想throw new Exception("Title is null")
;是像
String msg = rBundle.getMessage(propKey)
throw new Exception(msg);
其中rBundle是它知道它的區域設置和屬性文件束對象從它應該選擇爲propKey
值接收表單提交我的控制器類方法
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(
@RequestParam("siteLanguage") String siteLanguage,
@ModelAttribute("book") Book book, BindingResult result,
SessionStatus status, HttpServletRequest arg0) {
logger.debug("Adding a Book");
Locale loc = RequestContextUtils.getLocale(arg0);
if (result.hasErrors()) {
return "error.htm";
} else {
try {
Author author = new Author("Gabriel Garcia Marquez");
book.setAuthor(author);
library.addBook(book);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "redirect:home.htm";
}
}
這可能嗎?還是更好,我控制了相應語言環境的Java ResourceBundle加載。
感謝
某些異常消息會傳播到UI上,這就是爲什麼我們需要將它們本地化。 – 2011-04-21 05:35:46
在這種情況下,我建議在您的例外中使用消息代碼。但正如我所知道的那樣,異常本地化是一個架構決策,因此您需要從項目開始時的指定方式進行。稍後改變架構決定,在大多數情況下是非常昂貴的。 – Ralph 2011-04-21 06:40:38