我試圖創建一個用於診斷更復雜項目中的錯誤的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添加其他所需的元素,而這些對於此測試用例不是必需的。
我會將其他用戶的答案標記爲已接受。但是,前一段是解決問題的解決方案。
對不起,我不是那種運行我在互聯網上找到的隨機代碼的類型! 但是,我可以告訴你,你編輯的文章已經告訴我一些東西 - 我不認爲你的方法正在被打擊! 雖然我願意看看你的日誌文件的其餘部分,你可以將它發佈在某個地方嗎? – ninj
我在OP的結尾添加了答案。我還將您的答案標記爲+1,並感謝您對此進行調查。另外,一個壓縮的eclipse項目只是一些文件夾和類的集合,它們具有一些配置。在這種情況下,內容非常簡約,只需要幾分鐘時間即可簡單地將文件剪切並粘貼到新項目中,並讀取每個文件而不是盲目地導入。但無論如何,問題現在都解決了。 – CodeMed
你不應該把答案標記爲只是爲了謝謝某人。將來有人會看這個答案的指導。 –