2015-04-27 45 views
0

我试图创建一个用于诊断更复杂项目中的错误的spring mvc项目的最小复制。但是,当我尝试点击触发控制器方法的url时,eclipse控制台会提供一个错误,指出ModelAndView为null。虽然this other question询问了类似的错误,但您可以看到问题未得到解答,因为四位独立的人员对该评论给出了+1,因此需要详细阐述该答案。我也看了this other posting,但是遵循它的使用org.springframework.web.servlet.ModelAndView而不是Map的建议并没有解决问题。另外,如果可能的话,我想使用Map,因为Map在我的更复杂的应用程序中工作。 我该如何解决这个错误?Spring将ModelAndView返回给DispatcherServlet

下面是当在引发错误被称为控制器的方法:

@RequestMapping(value = "/TriggerTheError", method = RequestMethod.GET) 
public String processFindForm(HttpServletRequest request, BindingResult result, Map<String, Object> model) {   
    return "ReproduceError"; 
} 

控制台打印出以下日志时上述控制器方法称为:

13:59:10.874 [http-nio-8080-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'MinimalDbaseExample' processing GET request for [/MinimalDbaseExample/TriggerTheError] 
13:59:10.874 [http-nio-8080-exec-3] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /TriggerTheError 
13:59:10.874 [http-nio-8080-exec-3] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/TriggerTheError] 
13:59:10.875 [http-nio-8080-exec-3] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Matching patterns for request [/TriggerTheError] are [/**] 
13:59:10.875 [http-nio-8080-exec-3] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - URI Template variables for request [/TriggerTheError] are {} 
13:59:10.875 [http-nio-8080-exec-3] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Mapping [/TriggerTheError] to HandlerExecutionChain with handler [org.spring[email protected]186a461c] and 1 interceptor 
13:59:10.875 [http-nio-8080-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - Last-Modified value for [/MinimalDbaseExample/TriggerTheError] is: -1 
13:59:10.875 [http-nio-8080-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'MinimalDbaseExample': assuming HandlerAdapter completed request handling 
13:59:10.875 [http-nio-8080-exec-3] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request 

答案


解决方案是简单地删除BindingResult,因为在这种情况下不需要。通过从控制器方法的参数中除去BindingResult,错误被删除。稍后,如果需要BindingResult,那么解决方案将仅仅是为BindingResult添加其他所需的元素,而这些对于此测试用例不是必需的。

我会将其他用户的答案标记为已接受。但是,前一段是解决问题的解决方案。

回答

1

如果您打算返回字符串ReproduceError,则将返回值标记为@ResponseBody

另一方面,如果你有一个名为ReproduceError的视图,那么也许你的视图解析器配置不正确?

编辑:好的,看起来像ReproduceError视图的渲染是有意的,但是从日志文件看来,控制器方法似乎没有被击中。

+0

对不起,我不是那种运行我在互联网上找到的随机代码的类型! 但是,我可以告诉你,你编辑的文章已经告诉我一些东西 - 我不认为你的方法正在被打击! 虽然我愿意看看你的日志文件的其余部分,你可以将它发布在某个地方吗? – ninj

+0

我在OP的结尾添加了答案。我还将您的答案标记为+1,并感谢您对此进行调查。另外,一个压缩的eclipse项目只是一些文件夹和类的集合,它们具有一些配置。在这种情况下,内容非常简约,只需要几分钟时间即可简单地将文件剪切并粘贴到新项目中,并读取每个文件而不是盲目地导入。但无论如何,问题现在都解决了。 – CodeMed

+0

你不应该把答案标记为只是为了谢谢某人。将来有人会看这个答案的指导。 –

相关问题