@Valid并从DB数据绑定结果(@Valid and Binding Result for Dat

2019-09-17 20:11发布

我使用Spring的验证(JSR 303)在网络apps.I的一个都没有问题,当用户提交的数据和春季验证工作得neat.But我遇到的情况,我必须从服务获取数据并验证它,然后将它们绑定到我的看法。(一些非表单验证)我。怎么可以用@Valid在这种情况下,还是必须以不同的方式做?

下面是一个示例代码,我开始

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView getView(
        @PathVariable("id") final String id, @User user,
        HttpSession session) {

    User user=  getUser();

   BindingResult result = new BeanPropertyBindingResult(user, "user");

   validator.validate(user, result);

   if(result.hasErrors()){
       logger.log(Level.ERROR, "Errors");
   }

  ModelAndView view = new ModelAndView ("home");
  view.addObject("user",user );
  view.addAllObject(result.getModel());

   return view;

Answer 1:

据我了解,你需要注入默认org.springframework.validation.Validator到您的控制器(如果@Valid工作,你应该能够做到这一点)

@Autowired
Validator validator;

手动运行验证如下

User user = ...;
BindingResult result = BeanPropertyBindingResult(user, "user");
validator.validate(user, result);

并合并结果纳入ModelMap (声明它作为方法的参数)如下

model.addAllAttributes(result.getModel());


文章来源: @Valid and Binding Result for Data from DB