我的控制器中有以下方法:
@RequestMapping(value = "/status", method = RequestMethod.POST)
public String update(@Valid StatusForm statusForm, BindingResult result) {
if(result.hasErrors()) {
return "statusForm";
}
//do stuff when there are no errors
return "dashboard";
}
在很多这些方法中似乎都有重复的代码块:
if(result.hasErrors()) {
return "statusForm";
}
有没有办法避免必须插入此块并自动重定向回到POST请求来自发生验证错误的位置?
答案 0 :(得分:0)
可以从多个页面访问相同的操作,因此您必须以某种方式配置错误视图。例如,在struts中,您有一个xml文件,用于描述每个操作的输入jsp。可能可以创建包含视图ID的注释,并实现AnnotationMethodHandlerAdapter来处理此逻辑。
目前在代码中实现此功能的方法有一个优点。它允许您在操作方法中进行其他验证,可能会检查数据库中的某些值或更复杂的业务规则,并以统一的方式处理此错误。
答案 1 :(得分:0)
在控制器处理程序方法中,确保BindingResult参数紧跟在命令参数之后。