2011-07-07 34 views
7

我已閱讀關於視圖解析器的Spring 3文檔...但在我的項目中,我沒有定義任何。我只是從控制器方法返回一個ModelAndView@ResponseBody字符串。我想有一個已經配置的默認視圖解析器(可能是UrlBasedViewResolver)。那是什麼?我在哪裏可以獲得有關此文檔的信息?什麼是默認的Spring 3視圖解析器?

如果我想添加其他視圖一樣JsonViewXmlView(現在我使用JSP呈現的數據,但我看我可以通過傳遞模型避免這種直接對象,會爲我做這個特殊的觀點)如何我是否處理這個默認的視圖解析器?

回答

10

默認是自動註冊的InternalResourceViewResolverUrlBasedViewResolver是這個的抽象超類)。

如果您聲明自己的視圖解析器,那麼將不會使用默認的InternalResourceViewResolver。如果你願意,你可以簡單地將它重新聲明爲一個顯式bean。如果有多個視圖解析器,則會按順序查看它們,直到其中一個視圖對象返回。但是,由於servlet API的工作方式,InternalResourceViewResolver必須總是是鏈中的最後一個視圖解析器。

如果您的控制器方法直接返回View對象,則不需要視圖解析器,視圖將直接呈現。同樣,如果您使用@ResponseBody,則繞過視圖解析程序。

+0

你總是知道關於春天男人的一切...你是春季開發者嗎? (無論如何,謝謝,我問,因爲我很好奇!) – gotch4

+8

@ gotch4:不,只是一個長期忍受的用戶:) – skaffman

+2

@skaffman,我沒有在我的{servlet名稱} -servlet中指定任何視圖解析器。假定「InternalResourceViewResolver」爲默認值的xml文件。但是我得到的錯誤'沒有找到與名稱爲'lms''的DispatcherServlet中的具有URI [/ LMS-MVC/userList]的HTTP請求的映射現在,如果我手動配置此視圖解析器,它將起作用。你能解釋這種行爲嗎? –

相關問題