私は、ViewResolverとしてSpringMVCとThymeleafを使用してWebアプリケーションを開発しています。私は次のコントローラーハンドラーメソッドを持っています:
@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";
}
これも機能しません。