2014-09-05 2 views
2

У меня есть страница с формой и таблицей. Когда я отправлю форму, я хочу, чтобы она заполнила таблицу.SpringMVC: POST Redirect 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? –

+0

Это тот же вопрос, но ответ - это взлом, и это означает, что это не «нормальный путь», рассчитанный весной. Начиная с spring-mvc 1, мы должны опубликовать, а затем показать результат. Как это все еще может быть так сложно сделать? –

ответ

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 сохраняет данные. Это одно или другое:/

Смежные вопросы