2010-03-02 102 views
5

是否可以在同一個Web應用程序中一起使用InternalResourceViewResolver和BeanNameViewResolver?Spring和視圖解析器

我的意思是InternalResourceViewResolver來解析我的jsp。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/> 

而不是BeanNameViewResolver來解決我的Excel(我需要傳遞網址)。

再見。 謝謝

+0

我注意到新的Spring 3'p:xyz'語法越來越受到所有人的歡迎......我不喜歡我自己,我覺得它很混亂。也許我只是變老了。 – skaffman 2010-03-03 00:11:42

回答

3

是的,你可以結合多個解析器。 Spring迭代它們並使用能夠解析給定名稱的第一個解析器。您還可以在解析器中設置order屬性以指定迭代順序。

9

如果你喜歡,你可以在你的上下文中擁有儘可能多的視圖解析器,Spring會一個接一個地檢查它們,直到它解析視圖。

有一個警告,雖然:

注意:當鏈接ViewResolvers,一個 InternalResourceViewResolver總是 需求是最後的,因爲它會嘗試 解決任何視圖名稱,無論 底層資源 是否確實存在。

這是servlet API的「缺陷」,因爲InternalResourceViewResolver在實際嘗試之前無法知道資源是否存在。

因此,請確保您的BeanNameViewResolverInternalResourceViewResolver之前定義,或明確指定每個屬性的order屬性。

+0

謝謝! 僅當我處於相同的servlet上下文中時,才需要訂購屬性。我的意思是,如果我有jsp的servlet上下文,我使用的是InternalResourceViewResolver,而另一個是使用BeanNameViewResolver的excel文件,我不需要使用該命令。 對不對?他們是獨立的.. – andrew0007 2010-03-03 09:24:52

+0

是的。只有當它們處於相同的上下文中時,'order'屬性纔是必需的,*和*它們在文件中沒有處於正確的物理順序。 – skaffman 2010-03-03 09:44:21

相關問題