Spring的新手,在阅读参考文档后,验证简单网页表单的工作流程并没有突然出现在我身上。
有人可以给我一个初学者概述我们如何在Spring 3.0.3中进行表单验证(我在webapp中混合使用注释和xml配置,我现在正在迁移)。从Controller开始,会发生什么?
例如:到目前为止,我认为我理解我应该将表单数据“绑定”到我的创建对象(例如MyPerson),然后创建一个接受MyPerson并使用ValidationUtils执行验证的Validation对象。
但是这一切都非常模糊(特别是“绑定”概念),并且从以前经历过这个过程的人那里逐步审查工作流程会帮助我确信我没有丢失或误解任何步骤。
答案 0 :(得分:2)
您提及的验证表单的方法是您可以使用的几个选项之一。
除了您建议的方法之外,您可能还希望使用具有适当实现的JSR-303注释进行调查(例如Hibernate Validator)。有很多如何实现这一目标的例子。
对于弹簧验证方法,您的基本步骤是:
@ModelAttribute
注释将表单数据绑定到绑定对象@Autowired
到您的控制器)来执行验证这是一个简单的示例控制器:
@Controller
public class PersonController {
@Autowired
private PersonValidator personValidator;
@RequestMapping(value="person/form", method = RequestMethod.GET)
public ModelAndView form() {
// Instance of binding object
Person person = new Person();
// Create ModelAndView which displays personForm view
ModelAndView mav = new ModelAndView("person/form");
// Put our binding object in the model
mav.getModel().put("person", person);
return mav;
}
@RequestMapping(value="person/form", method = RequestMethod.POST)
public String save(@ModelAttribute Person person, BindingResult errors, Model model) {
// Call our custom validator and put errors into BindingResult
personValidator.validate(person, errors);
// If we have validation errors
if (errors.hasErrors()) {
// Show form with errors
return "person/form";
}
// Otherwise show some success page
return "person/success";
}
}