SpringMVC:POST重定向GET和错误消息?

时间:2014-09-05 17:17:19

标签: java spring spring-mvc

我有一个包含表单和表格的页面。当我提交表格时,我希望它填写表格。

我尝试简单地返回视图名称,但它没有通过" 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";
    }
}

1 个答案:

答案 0 :(得分: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();
    }

它确实有效,但表格会保留数据。它是一个或另一个:/