我无法使用thymeleaf 3将args从html传递给spring mvc 4 controller。
这是控制器:
// Handler method for inserting currency:
@RequestMapping(value = "/saveCurrency", method = RequestMethod.POST)
public ModelAndView saveCurrency(@ModelAttribute("currency") Currency currency, BindingResult bindingResult, Model model)
{
model.addAttribute("currency", currency);
currDAO.insert(currency);
return new ModelAndView("redirect:/listCurr");
}
和html表单:
<form action="/saveCurrency" th:action="@{/saveCurrency}" th:object="${currency}" th:method="post">
<input id="nameTB" type="text" th:field="*{name}" class="form-control" maxlength="3" style="text-transform:uppercase" />
...
</form>
我还有类货币,字段为“id”和“name”,并且有getter和setter。 现在使用此代码我收到错误:
SEVERE:servlet [dispatcher]的Servlet.service()与上下文有关 path []引发异常[请求处理失败;嵌套异常 是org.thymeleaf.exceptions.TemplateInputException:发生错误 在模板解析期间(模板:“ServletContext资源 [/WEB-INF/views/listCurr.html]“)]有根本原因
java.lang.IllegalStateException:既不是BindingResult也不是plain bean名称'currency'的目标对象可用作请求属性
知道我做错了什么吗?
答案 0 :(得分:1)
问题是先前未设置模型属性。您需要一些请求映射方法来设置模型属性:
@RequestMapping(value = "/currency", method = RequestMethod.GET)
public String currencyPage(Model model) {
model.addAttribute("currency", new Currency());
return "listCurr";
}
旁注:在您的方法中,您不需要设置&#34;货币&#34;模型attr。再次。此外,您想在保存货币之前检查BindingResult
是否有错误:
if(!bindingResult.hasErrors()) {
currDAO.insert(currency);
}
答案 1 :(得分:0)
不要重定向,返回带有视图的模型。
model.addAttribute("currency", currency);
return new ModelAndView("listr");