我正在阅读团队中的一些遗留代码,发现有些处理程序方法没有 BindingResult
/ Errors
在model属性之后声明,但是代码运行良好,没有任何问题。这与我之前对springmvc的理解有冲突。
例如,一个处理程序方法如下所示
@RequestMapping(value = "/search")
public String initateSearchData(HttpServletResponse response, HttpSession session, @ModelAttribute("searchData") SearchData searchData, Model model, Errors errors).
有人能告诉我为什么在这种情况下没有出现错误“errors/bindingresult参数应该在model属性之后立即声明”?
1条答案
按热度按时间ltqd579y1#
spring的文档说明:错误或bindingresult参数必须紧跟在被立即绑定的模型对象之后,因为方法签名可能有多个模型对象,spring将为每个模型对象创建一个单独的bindingresult示例。下面的代码解释了这个场景
问题:
上面的代码给出了java.lang.illegalstateexception:errors/bindingresult参数,声明时没有前面的model属性。检查处理程序方法签名。
解决方案:
每当您想在控制器方法中定义bindingresult对象时,就在(@modeldAttribute)model属性之后声明它。