DB数据的@Valid和绑定结果
问题内容:
我在其中一个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;
问题答案:
据我了解,您需要将默认值注入org.springframework.validation.Validator
到控制器中(如果@Valid
可行,您应该能够做到)
@Autowired
Validator validator;
手动运行验证,如下所示
User user = ...;
BindingResult result = BeanPropertyBindingResult(user, "user");
validator.validate(user, result);
并将结果合并为ModelMap
(将其声明为方法的参数),如下所示
model.addAllAttributes(result.getModel());