2014-02-26 88 views
0

我已經通過渲染使用spring3.2.5 &視圖的其他職位了tiles3春3.2.5磚3不渲染視圖

在我的上下文servlet.xml中

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass"> 
    <value> 
     org.springframework.web.servlet.view.tiles3.TilesView 
    </value> 
    </property> 

在我的瓷磚-servlet.xml中

<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
<property name="definitions"> 
    <list> 
      <value>/WEB-INF/tiles/common/tiles.xml</value> 
      <value>/WEB-INF/tiles/common/base_tiles.xml</value> 
       <value>/WEB-INF/tiles/common/person_tiles.xml</value> 
     </list> 
</property> 
</bean> 

在person_tiles.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE tiles-definitions PUBLIC 
    "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" 
    "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> 
<tiles-definitions> 

    <definition name="new_person" extends="base.definition"> 
     <put-attribute name="body" value="/WEB-INF/xx/xxx/web_person.jsp" /> 
    </definition> 
</tiles-defnitions> 

它拋出以下錯誤 javax.servlet.ServletException:在servlet的無法解析視圖名稱爲「new_person」名爲「項目」

請幫我解決這個問題。

回答

1

討論此「行爲」的相關問題是SPR-11491,特定於Tiles v3。它來自SpringWildcardServletTilesApplicationContext.getResources(String) - > URLApplicationResource(String,URL)構造函數 - >超級PostfixedApplicationResource(String localePath)構造函數。當定義文件名中有下劃線時,最後一個下劃線後面的字符串被識別爲語言環境。

Tiles section of Spring 4.0.3 reference documentation已更新,以便使此行爲更加明確,並且目前正在與Tiles開發團隊進行討論,通過檢查Locale.getISOLanguageCodes()的語言環境以獲得不太令人吃驚的默認行爲。

+0

經過4個小時的調試,我可以確認這是我們的問題。我有app_tiles.xml,一旦我將其更改爲tiles.xml文件就可以了。 –

1

經過大量的挖掘,我發現瓷磚沒有正確加載資源。

在這裏我不知道它是否是一個錯誤(春季3.2.5 &瓦3.0.1)或不:

但是我按照

在這裏我磚,servlet的解決了這個問題.XML

<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
     <value>/WEB-INF/tiles/common/tiles.xml</value> 
     <value>/WEB-INF/tiles/common/baseTiles.xml</value><!-- Change the base_tiles to baseTiles.xml or base.xml --> 
     <value>/WEB-INF/tiles/common/personTiles.xml</value><!-- Change the person_tiles.xml to personTiles.xml or person.xml--> 
     </list> 
    </property> 
</bean> 

這裏的時候,我們有與下劃線分隔的定義值(例如:person_tiles或base_tiles)它不加載resource.However tiles.xml瓷磚,定義訪問。

但我試過用瓷磚2.2 & spring 3.2.5它工作正常。儘管我們提供了person_tiles或base_tiles.xml。

瓷磚-servlet.xml中

更改base_tiles & person_tiles到baseTiles & personTiles,並相應修改了文件名。

OR

更改base_tiles & person_tiles立足&人,並相應修改了文件名。

我希望有人能找到它有用。