繁体   English   中英

Spring将空的ModelAndView返回给DispatcherServlet

[英]Spring returning null ModelAndView to DispatcherServlet

我正在尝试创建spring mvc项目的最小复制品,以用于诊断更复杂项目中的错误。 但是,当我尝试单击触发控制器方法的url时,eclipse控制台给出了一个错误,指示ModelAndView为null。 另一个问题询问类似的错误时,您可以看到该问题没有得到回答,因为四个人对需要详细说明答案的评论给予了+1。 我也看过另一篇文章 ,但是遵循有关使用org.springframework.web.servlet.ModelAndView而不是Map的建议不能解决问题。 另外,如果可能的话,我想使用Map,因为Map在我更复杂的应用程序中有效。 如何解决此错误?

抛出错误时,将调用以下控制器方法:

@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.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@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添加此测试用例不需要的其他必需元素。

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

如果要返回字符串ReproduceError ,请使用@ResponseBody标记返回值。

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

编辑 :好的,看起来像是要再现ReproduceError视图,但是从日志文件看来,控制器方法没有被击中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM