在Spring 3中支持Apache tile EL

pse*_*udo 8 spring-mvc apache-tiles

我正在尝试在Spring 3.1中配置apache tiles 2.2.2 EL支持.

根据tile文档以及我在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>
Run Code Online (Sandbox Code Playgroud)

简单的瓷砖定义:

<tiles-definitions>
    <definition name="temp.test" template="/WEB-INF/views/temp/test.jsp">
        <put-attribute name="test" expression="${test}" />
    </definition>
</tiles-definitions>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

cp上的Tiles库:

    <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>
Run Code Online (Sandbox Code Playgroud)

aom*_*mar 0

使用

<!--this works fine with expressions-->
<tiles:insertAttribute name="test" ignore="true" />
Run Code Online (Sandbox Code Playgroud)

代替

<!-- and this will throw NullPointerException if value is not provided-->
<tiles:getAsString name="test" ignore="true"/>
Run Code Online (Sandbox Code Playgroud)