2015-09-08 18 views
2

我正在經歷Craig Walls Manning Spring4 in Action爲什麼我需要一個視圖類來解析Spring MVC中的JSTL視圖?

在創建JSP的觀點,他認爲,

的InternalResourceViewResolver最終解決邏輯視圖 名稱爲實例InternalResourceView引用JSP文件 。 但是,如果這些JSP文件引用JSTL標籤formatiing消息,那麼你可能需要配置的InternalResourceViewResolver來解決JSTLView代替。

所有這一切需要有InternalResourceView解析器解析器JstlView,而不是InternalResourceView就是設置其viewClass類財產。

這樣,

@Bean 
    public ViewResolver viewResolver() { 

     InternalResourceViewResolver resolver = 
      new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/views/"); 
     resolver.setSuffix(".jsp"); 
     resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class); 

     return resolver; 
    } 

爲什麼我要加入這一行

resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);

和究竟是什麼這個類意味着?

有什麼建議?`

+0

你不...... Spring會自動檢測到JSTL的存在,並在可用時自動返回一個'JstlView'。所以你在這裏什麼都不加。見[這裏](https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/view/InternalResourceViewResolver.java#L62 ) –

+0

@Deinum:同意,但爲什麼這樣一本好書的作者提到了這一點。 –

+1

在早期版本中,它並沒有這樣做,我想這是由於舊材料的重用...... –

回答

5

在舊版本的春天有沒有的功能,自動檢測。這已經在不同的課程中慢慢引入。 InternalResourceViewResolver在早期沒有自動檢測到JSTL,這需要一個總是將JstlView指定爲viewClass

然而this revision在很早就包含Spring的SVN中已經加入了它,並且從那時起就有自動檢測使用哪個viewClass

提交消息


r14417 | jhoeller | 2007-08-05 00:01:19 +0200(zo,2007年8月5日)| 2號線

的InternalResourceViewResolver使用JstlView爲默認值(而不是InternalResourceView)如果JSTL API存在


的原因,它仍然是在書中我也說不上來,我懷疑是由於重用來自以前發行版的資料已被留下,但這是一個猜測。只有the author可以回答這個問題。

+0

@Deinum:謝謝你。 –

+0

花了我一段時間來弄清楚舊的SVN uris :)和挖掘SVN日誌。一個不錯的軟件考古學:)。 –