我试图将啤酒厂对象添加到数据库,并且在执行任务之前检查错误。当我通过调试器时,它说它具有今天的日期变量,当它说有错误时,我先设置了它以检查错误,然后打印出result.hasErrors,并说该属性为null。
通过调试器时
当代码用于检查错误并打印出错误时
@PostMapping("/addBrewery")
public ModelAndView addAnBrewery(ModelMap model, @Valid @ModelAttribute("brewerie") Breweries brewerie, BindingResult result) {
Date date = new Date();
brewerie.setLastMod(date);
brewerie.setId(1);
if (result.hasErrors()) {
System.out.println(result);
return new ModelAndView("/addBrewery");
}
打印出来的错误
字段“ lastMod”上的对象“酿酒厂”中的字段错误:拒绝的值[null];代码[NotNull.brewerie.lastMod,NotNull.lastMod,NotNull.java.util.Date,NotNull];参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[brewerie.lastMod,lastMod];参数[];默认消息[lastMod]];默认消息[不能为空]
最佳答案
我先检查错误
不,你不会。由于@Valid
批注,错误检查是在方法调用之前完成的。调用result.hasErrors()
不会执行验证,它只会返回lastMod
为null
时分配的结果。