Я разрабатываю веб-приложение с Spring MVC и Thymeleaf в качестве моего ViewResolver. У меня есть следующий метод обработчика контроллера:
@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";
}
Это тоже не работает.