2014-09-05 101 views
2

我有一張表格和一張表格。當我提交表格時,我希望填寫表格。SpringMVC:POST重定向GET和錯誤消息?

我試着簡單地返回視圖名稱,但它沒有通過「Get」方法。

我看到了Post Redirect Get模式,所以我嘗試了它,並且它有效地刷新了頁面。但是,然後驗證錯誤不會顯示在標籤中。

我在其他地方看到您可以使用RedirectAttributes和flashAttribute bindingResult,但它仍然無法正常工作。

我不知道做這件事的正常方法是什麼。

這裏是我的代碼:

@Controller 
@RequestMapping("/settings") 
public class SettingsController { 
    @Autowired 
    protected SettingsService settingsService; 

    @RequestMapping(method = RequestMethod.GET) 
    public void loadSettings(Model model) { 
     model.addAttribute("settings", new Settings()); 
     model.addAttribute("settingsList", settingsService.getAllSettings(); 
    } 

    @RequestMapping(value = "/add", method = RequestMethod.POST) 
    public String saveSettings(@ModelAttribute("settings") @Valid Settings settings, Errors errors, RedirectAttributes redirectAttributes) { 
     // code 

     redirectAttributes.addFlashAttribute("settings", settings); 
     redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.settings", errors); 
     return "redirect:/settings"; 
    } 
} 
+0

這是一樣的http://stackoverflow.com/q/9329741/217324? – 2014-09-05 17:42:42

+0

這是同樣的問題,但答案是黑客,這意味着它不是春季意圖的「正常方式」。由於spring-mvc 1,我們必須發佈並顯示結果。它怎麼能這麼複雜呢? – 2014-09-06 09:06:50

回答

0

我做了工作,但我不知道爲什麼:

取而代之的是:

@RequestMapping(method = RequestMethod.GET) 
    public void loadSettings(Model model) { 
     model.addAttribute("settings", new Settings()); 
     model.addAttribute("settingsList", settingsService.getAllSettings(); 
    } 

我有這樣的:

@RequestMapping(method = RequestMethod.GET) 
    public void loadSettings(Model model) { 
     if (!model.containsAttribute("settings")) { 
      model.addAttribute("settings", new Settings()); 
     } 
     model.addAttribute("settingsList", settingsService.getAllSettings(); 
    } 

它可以工作,但fo rm保持數據發佈。它是一個或另一個:/