2013-08-23 48 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"; 
    } 
}