2

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

@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 请求的来源?

4

2 回答 2

0

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

当前在代码中执行此操作的方式有一个优势。它允许您在操作方法中进行额外的验证,可能检查数据库中的某些值或更复杂的业务规则,并以统一的方式处理这些错误。

于 2011-03-11T11:22:20.437 回答
0

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

于 2012-05-02T12:48:51.680 回答