首页 > 解决方案 > 将对象传递给数据库时,调试器说属性有变量,但是当打印 result.hasErrors 时它为空

问题描述

我正在尝试将 brewerie 对象添加到数据库中,并在它执行任务之前检查错误。当我通过调试器时,它说它有一个今天日期的变量,当它说它有错误时,我在它检查错误之前设置它,我打印出 result.hasErrors 并且它说属性为空。

通过调试器时 在此处输入图像描述

当它用于检查错误并打印出错误的代码时

@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”上的对象“brewerie”中的字段错误:拒绝值 [null];代码 [NotNull.brewerie.lastMod,NotNull.lastMod,NotNull.java.util.Date,NotNull]; 参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [brewerie.lastMod,lastMod]; 论据 []; 默认消息 [lastMod]]; 默认消息[不能为空]

标签: javaspringdebuggingnull

解决方案


我在检查错误之前设置它

不,你没有。由于@Valid注解,错误检查是在方法调用之前完成的。调用result.hasErrors()不执行验证,它只返回 is 时分配的lastMod结果null


推荐阅读