【问题标题】:Apache tiles EL support in Spring 3Spring 3 中的 Apache tile EL 支持
【发布时间】:2013-06-07 22:40:48
【问题描述】:

我正在尝试在 Spring 3.1 中配置 apache tile 2.2.2 EL 支持。

根据瓷砖文档和我在谷歌上找到的内容,这应该可以工作,但它不会,相反,它会抛出 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 上的 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>

【问题讨论】:

  • 你在jsp文件的开头添加&lt;%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%&gt;了吗?您能否更准确地了解NullPointerException - 发布完整的堆栈跟踪?
  • 同意@Xaerxess。你能发布你的整个 JSP 和你的 NPE 的堆栈跟踪吗?

标签: spring-mvc apache-tiles


【解决方案1】:

使用

<!--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"/>

【讨论】:

    【解决方案2】:

    在玩 spring mvc 3.1.2.RELEASE 和 tile 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>
    

    【讨论】:

      猜你喜欢
      • 2022-12-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 2011-06-09
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多