我正在開發一個Web應用程序與Spring MVC和Thymeleaf作爲我的ViewResolver。我有以下控制器處理方法:春天MVC和thymeleaf ModelAttribute爲null或未評估
@RequestMapping(value = "/something", method = RequestMethod.POST, params = "submit")
public String doSomething(@ModelAttribute("error") String error /*, other attributes */) {
// find out if there is an error
error = getErrorMessage();
return "someHTMLfile";
}
我認爲有這樣一行:
<p><span th:text="${error}">Error Message goes here</span></p>
執行時,標籤不呈現任何東西。這可能是由於${error}
評估爲空字符串,但我不明白爲什麼。 Spring的@ModelAttribute
註釋是否將對象自動添加到模型映射中,其中Thymeleaf可以找到它?
如果我代替有:
@RequestMapping(value = "/something", method = RequestMethod.POST, params = "submit")
public String doSomething(ModelMap map /*, other attributes */) {
// find out if there is an error
String error;
error = getErrorMessage();
map.addAttribute("error", error);
return "someHTMLfile";
}
視圖被呈現完全正常並顯示錯誤消息。 @ModelAttribute是否不將該對象添加到請求模型中?
編輯:我試着做兩個:
@RequestMapping(value = "/something", method = RequestMethod.POST, params = "submit")
public String doSomething(@ModelAttribute("error") String error, ModelMap map /*, other attributes */) {
// find out if there is an error
error = getErrorMessage();
map.addAttribute("error", error);
return "someHTMLfile";
}
這也不起作用。
'方法參數上的@ModelAttribute指示參數應該從模型中檢索。如果模型中不存在,則應首先實例化參數,然後將其添加到模型中。' –
原來我們都錯了,ModelAttribute的確按照我的想法做了。我很慚愧地說這是一個Java問題。看到我的答案。 –