2015-04-27 73 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

你不應該把答案標記爲只是爲了謝謝某人。將來有人會看這個答案的指導。 –

相關問題