Поддержка EL для тайлов Apache в Spring 3

Я пытаюсь настроить поддержку плиток apache 2.2.2 EL в Spring 3.1.

Согласно документации плиток и тому, что я нашел в Google, это должно работать, но это не так, вместо этого выдается исключение NullPointerException.

Конфигурация плитки:

<bean class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">
    <property name="order" value="1"/>
</bean>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/views/**/views-def.xml</value>
        </list>
    </property>
    <property name="tilesProperties">
        <props>
            <prop key="org.apache.tiles.evaluator.AttributeEvaluator">
                org.apache.tiles.el.ELAttributeEvaluator
            </prop>
        </props>
    </property>
</bean>

Простое определение плитки:

<tiles-definitions>
    <definition name="temp.test" template="/WEB-INF/views/temp/test.jsp">
        <put-attribute name="test" expression="${test}" />
    </definition>
</tiles-definitions>

test.jsp

<%--Works fine--%>
<h2>Called in jsp</h2>
<p>
    <c:out value="${test}"/>
</p>

<%-- throws NullPointerException --%>
<h2>Inserted from tiles</h2>
<p>
    <tiles:getAsString name="test"/>
</p>

Библиотеки тайлов на cp:

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-template</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-el</artifactId>
        <version>2.2.2</version>
    </dependency>

person pseudo    schedule 25.01.2012    source источник
comment
Вы добавили <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> в начало файла jsp? Можете ли вы быть более точным насчет NullPointerException - опубликовать полную трассировку стека?   -  person Xaerxess    schedule 27.08.2012
comment
Согласен с @Xaerxess. Не могли бы вы опубликовать весь свой JSP и трассировку стека вашего NPE?   -  person David Welch    schedule 03.12.2012


Ответы (2)


использовать

<!--this works fine with expressions-->
<tiles:insertAttribute name="test" ignore="true" />

вместо

<!-- and this will throw NullPointerException if value is not provided-->
<tiles:getAsString name="test" ignore="true"/>
person aomar    schedule 07.06.2013

Было похожее поведение с нулевым указателем при игре с spring mvc 3.1.2.RELEASE и плитками 2.2.2. Проверьте свой xerxesImpl, если это последняя версия 2.9.1. Также проверьте свой taglib, как упоминалось ранее, также проверьте свой журнал. Они отлично работают вместе:

<org.slf4j.version>1.5.8</org.slf4j.version>
    <log4j.version>1.2.16</log4j.version>
    <xercesImpl.version>2.9.1</xercesImpl.version>
    <org.springframework-version>3.1.2.RELEASE</org.springframework-version>
    <tiles.core.api.servlet.jsp.version>2.2.2</tiles.core.api.servlet.jsp.version>
person George Papatheodorou    schedule 29.10.2012