SpringMVC возвращает ошибки проверки с перенаправлением страницы

У меня есть форма, которая проверяется из init binder.setValidatior(). Однако у меня есть метод контроллера, который возвращает перенаправление после того, как это будет сделано, ошибки из функции проверки не привязываются к элементу ошибок в форме. Как я могу связать ошибки и по-прежнему использовать перенаправление.

Перенаправление необходимо, поскольку в URL-адресе есть данные, необходимые для восстановления страницы. Функция контроллера:

Контроллер

@RequestMapping(value = "monitoringList_save.htm", method = RequestMethod.POST)
    public ModelAndView handleSaveMonitoringRecord(@Valid @ModelAttribute Monitoring monitoring, BindingResult result,ModelMap m,
            HttpServletRequest request,SessionStatus status, HttpSession session,Model model) throws Exception {


        if(result.hasErrors()){

            return new ModelAndView(new RedirectView("monitoringList.htm"),"page",0); 
            //return new ModelAndView("monitoringList");
        }

        return new ModelAndView(new RedirectView("monitoringList.htm"),"page",0); 
    }

Если я сделаю return new ModelAndView("monitoringList");, информация на странице будет потеряна.


person devdar    schedule 03.05.2013    source источник


Ответы (2)


Вы можете использовать атрибуты Flash: http://viralpatel.net/blogs/spring-mvc-flash-attribute-example/

person Michal Borek    schedule 03.05.2013
comment
ошибки, установленные в валидаторе, RedirectAttributes недоступны в этот момент. Ошибки устанавливаются в валидаторе, а затем контроллер просто возвращает экземпляр представления, и ошибки привязываются, см. jeromejaglale.com/doc/java/spring/form_validation - person devdar; 04.05.2013

Решение состояло в том, чтобы добавить старый экземпляр объекта обратно в представление, по-видимому, это объект, который привязывается к результатам проверки, а не к представлению. Решение состояло в том, чтобы добавить:

 if(result.hasErrors()){
            model.addAttribute("monitoring", monitoring);
            return new ModelAndView(new RedirectView("monitoringList.htm"),"page",0); 
            //return new ModelAndView("monitoringList");
        }
person devdar    schedule 03.05.2013