Forms SpringWeb:如何在表单提交时使用SpringValidator自动验证表单对象
我使用SpringValidator进行表单验证。下面是我的代码结构。如您所见,我必须在POST方法中手动调用validate。是否有任何方法可以在不调用validate()的情况下将验证器连接到表单处理中 请注意,我的域对象(MyModel)是一个POJO,没有任何字段级注释,如@NotNull等 非常感谢你的帮助Forms SpringWeb:如何在表单提交时使用SpringValidator自动验证表单对象,forms,spring,validation,Forms,Spring,Validation,我使用SpringValidator进行表单验证。下面是我的代码结构。如您所见,我必须在POST方法中手动调用validate。是否有任何方法可以在不调用validate()的情况下将验证器连接到表单处理中 请注意,我的域对象(MyModel)是一个POJO,没有任何字段级注释,如@NotNull等 非常感谢你的帮助 @Controller public class FormTest extends MyController { ..... @Autowired pr
@Controller
public class FormTest extends MyController {
.....
@Autowired
private MyValidator myValidator; // implementing Spring's Validator interface
......
@RequestMapping(value={"/formtest"}, method=RequestMethod.GET)
public String formGet(HttpServletRequest request,
@RequestParam(value="id", required = false) Long id,
Map<String, Object> map) {
return "/form";
}
@RequestMapping(value={"/formtest"}, method=RequestMethod.POST)
public String formPost(HttpServletRequest request,
@ModelAttribute("command") MyModel m,
@RequestParam(value="id", required = false) Long id,
Map<String, Object> map,
BindingResult result,
SessionStatus status) {
myValidator.validate(m, result); //manual validation
if (result.hasErrors()) {
return "/form";
}
service.saveMyModel(m);
return "redirect:/formtest?id=" + id;
}
@ModelAttribute("command")
public MyModel backingObject(HttpServletRequest request,
@RequestParam(value="id", required = false) Long id) {
MyModel m = null;
if (id != null)
m = service.getMyModel(id);
else
m = new MyModel();
return m;
}
}
@控制器
公共类FormTest扩展了MyController{
.....
@自动连线
私有MyValidator MyValidator;//实现Spring的验证器接口
......
@RequestMapping(值={“/formtest”},方法=RequestMethod.GET)
公共字符串formGet(HttpServletRequest请求,
@RequestParam(value=“id”,required=false)长id,
(地图){
返回“/表格”;
}
@RequestMapping(值={“/formtest”},方法=RequestMethod.POST)
公共字符串formPost(HttpServletRequest请求,
@ModelAttribute(“命令”)MyModel m,
@RequestParam(value=“id”,required=false)长id,
地图,
绑定结果结果,
会话状态(状态){
myValidator.validate(m,result);//手动验证
if(result.hasErrors()){
返回“/表格”;
}
saveMyModel(m);
return“redirect:/formtest?id=“+id;
}
@模型属性(“命令”)
公共MyModel backingObject(HttpServletRequest,
@RequestParam(value=“id”,required=false)长id){
MyModel m=null;
如果(id!=null)
m=service.getMyModel(id);
其他的
m=新的MyModel();
返回m;
}
}
您可以这样做:
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView saveEntity(@Valid Entity entity, BindingResult result) {
if (result.hasErrors()) {
// do something
}
// do something else
}
控制器中还需要其他方法来注册验证器:
@InitBinder("entity")
public void initBinder(WebDataBinder binder) {
binder.setValidator(new EntityValidator());
}
您可以这样做:
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView saveEntity(@Valid Entity entity, BindingResult result) {
if (result.hasErrors()) {
// do something
}
// do something else
}
控制器中还需要其他方法来注册验证器:
@InitBinder("entity")
public void initBinder(WebDataBinder binder) {
binder.setValidator(new EntityValidator());
}