来自DB的数据的@Valid和绑定结果

时间:2012-06-06 17:12:41

标签: spring spring-mvc

我在其中一个网络应用程序中使用Spring验证(JSR 303)。当用户提交数据并且弹簧验证工作非常简洁时我没有问题。但我有一个场景,我必须从服务获取数据和验证它,然后将它们绑定到我的视图。(非形式验证)。如果在这种情况下我可以使用@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;

1 个答案:

答案 0 :(得分:4)

据我了解,您需要将默认org.springframework.validation.Validator注入您的控制器(如果@Valid有效,您应该可以这样做)

@Autowired
Validator validator;

按如下方式手动运行验证

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

并将结果合并到ModelMap(将其声明为方法的参数),如下所示

model.addAllAttributes(result.getModel());