2013-08-23 47 views
1

我是Spring的新手,需要一点指导。我已经通过Spring教程,但找不到我在找什么。我想知道处理这种情况的最佳方式是什么:如何在弹簧控制器中处理重定向流程

  1. 用户转到索引页并用表单呈现。
  2. 用户填写表单并提交到一个新的URL(通行证客户端验证)
  3. 在窗体对象的春天验证,发现错误
  4. 与受影响的领域将用户重定向回索引页面突出

我认为这是这种情况的正确流程。如果没有,请另外告诉我。如果这是正确的流程,我如何将绑定/验证错误传递给模板?

回答

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"; 
    } 
}