在@Valid失败时自动返回输入表单

时间:2011-03-11 10:26:25

标签: java validation spring-mvc bean-validation

我的控制器中有以下方法:

@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请求来自发生验证错误的位置?

2 个答案:

答案 0 :(得分:0)

可以从多个页面访问相同的操作,因此您必须以某种方式配置错误视图。例如,在struts中,您有一个xml文件,用于描述每个操作的输入jsp。可能可以创建包含视图ID的注释,并实现AnnotationMethodHandlerAdapter来处理此逻辑。

目前在代码中实现此功能的方法有一个优点。它允许您在操作方法中进行其他验证,可能会检查数据库中的某些值或更复杂的业务规则,并以统一的方式处理此错误。

答案 1 :(得分:0)

在控制器处理程序方法中,确保BindingResult参数紧跟在命令参数之后。