2013-05-03 135 views
0

我有一个表单从init binder.setValidatior()获得验证。然而,我有一个控制器方法返回一个重定向,一旦完成,来自验证函数的错误不会绑定到窗体上的错误元素。我如何得到错误绑定,仍然使用重定向。SpringMVC返回页面重定向验证错误

重定向是必需的,因为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");然后在页面信息丢失。

回答

1
+0

错误在验证器中设置RedirectAttributes在该点无法访问。错误在验证器中设置,然后控制器只返回视图的一个实例,并且错误是绑定的,参见http://jeromejaglale.com/doc/java/spring/form_validation – devdar 2013-05-03 21:05:02

0

解决的办法是添加对象的旧实例回看,显然其结合到验证结果的对象,而不是视图。解决方法是加入:

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