我正在使用Spring MVC和Thymeleaf作为ViewResolver开发一个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";
}
这也不起作用。
最佳答案
其实我不认为您的问题与Thymeleaf有关,只是SpringMVC :-)
在第一个代码段中,您没有向请求模型添加任何内容,而是尝试从表单中获取名为“错误”的对象。
在第二个代码段中,您确实向模型添加了一个对象,这就是为什么您的视图呈现良好的原因。
查看SpringMVC doc here(16.3.3.8),以更好地理解方法参数上的@ModelAttribute批注。
关于java - Spring MVC和thymeleaf ModelAttribute为null或未评估,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14179972/