如何处理弹簧控制器中的重定向流程

时间:2013-08-23 00:03:05

标签: spring-mvc exception-handling spring-validator

我是Spring的新手,需要一点指导。我有通过Spring教程,但找不到我要找的东西。我想知道处理这种情况的最佳方法是什么:

  1. 用户转到索引页面并显示一个表单。
  2. 用户填写表单并提交到新URL(通过客户端验证)
  3. 在表单对象的Spring验证期间,它会检测错误
  4. 将用户重定向回索引页面并突出显示受影响的字段
  5. 我假设这是这种情况的正确流程。如果没有,请告诉我。如果这是正确的流程,我如何将绑定/验证错误传递给模板?

1 个答案:

答案 0 :(得分:0)

在这种情况下,请关注Post/Redirect/Get pattern流程。当服务器端验证失败(result.hasErrors())时,不重定向,但再次显示索引页。 Spring处理将错误传递给模板。要显示错误,请使用支持Spring MVC的模板引擎的功能(例如,显示JSP中的所有错误 - <form:errors path="*" element="div" />)。

@Controller
public class MyController {

    @RequestMapping(value="/index.html", method=RequestMethod.GET)
    public String display(@ModelAttribute MyForm myForm){
        return "index";
    }

    @RequestMapping(value="/process.do", method=RequestMethod.POST)
    public String processForm(@ModelAttribute @Validated MyForm myForm, 
                          BindingResult result) {

        if(result.hasErrors()){
            return display(myForm);
        }

        return "redirect:/processed.html";
    }
}