1

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

1 回答 1

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());
于 2012-06-06T17:38:46.833 回答