我的 Controller 中有以下方法:
@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";
}
有没有办法避免必须插入此 block 并在出现验证错误时自动重定向回 POST 请求的来源?
最佳答案
可以从多个页面访问相同的操作,因此您必须以某种方式配置错误 View 。例如,在 struts 中,您有一个 xml 文件来描述每个操作的输入 jsp。可能会创建一个包含 View ID 的注释并实现一个 AnnotationMethodHandlerAdapter。来处理这个逻辑。
当前在代码中执行此操作的方法有一个优点。它允许您在操作方法中进行额外的验证,可能检查数据库中的某些值或一些更复杂的业务规则,并以统一的方式处理这些错误。
关于java - @Valid 失败时自动返回输入表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271703/