2014-02-26 2 views
0

Я прошел через другой пост рендеринга вида с помощью spring3.2.5 & tiles3Spring 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: Не удалось разрешить представление с именем «new_person» в сервлет с именем «проекта»

, пожалуйста, помогите мне решить эту проблему.

ответ

1

Связанная тема, обсуждающая это «поведение»: SPR-11491 и относится к Tiles v3.

Это источник SpringWildcardServletTilesApplicationContext.getResources (String) -> конструктор URLApplicationResource (String, URL) -> конструктор super PostfixedApplicationResource (String localePath). Когда в именах определений есть символ подчеркивания, строка после последнего подчеркивания идентифицируется как локаль.

Обновлен Tiles section of Spring 4.0.3 reference documentation, чтобы сделать это поведение более явным, и в настоящее время проводится обсуждение с командой разработчиков Tiles, чтобы получить это исправление, проверив локаль с Locale.getISOLanguageCodes(), чтобы получить менее удивительное поведение по умолчанию ,

+0

После 4 часов отладки я могу подтвердить, что это была наша проблема. У меня был app_tiles.xml, и как только я заменил его на файл styles.xml, он работал. –

1

После многократного поиска я обнаружил, что плитки не загружают ресурсы должным образом.

Здесь я не уверен, является ли это ошибка (весна 3.2.5 & плитки 3.0.1) или нет:

Но я решил эту проблему, следуя

здесь, в моих плитками-сервлет .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 & Весна 3.2.5 работает правильно. Хотя мы даем как person_tiles или base_tiles.xml.

В плитки-servlet.xml

Измените base_tiles & person_tiles к baseTiles & personTiles, и соответственно изменены имена файлов.

ИЛИ

изменить base_tiles & person_tiles базировать & человека, и соответствующим образом изменить имена файлов.

Я надеюсь, что кто-то найдет его полезным.

Смежные вопросы