5

我正在使用 Apache 磁贴进行模板化,模板的一部分是标题文本。此文本取决于页面所属的部分。每个页面都包含一个 bean,并且标题文本是使用该 bean 的属性构建的。每个页面的 bean 都会有不同的名称。所以,在我的 JSP 文件中,我会有这样的东西:

<div>${myBean.id} - ${myBean.name}</div>

我想在 tile 定义中得到那个表达式,我试过这个:

<definition template="/WEB-INF/tiles/layout/mytemplate.jsp">
  <put-attribute name="title" expression="${myBean.id} - ${myBean.name}" />
</definition>

在模板中我这样做:

<div class="title-header"><tiles:insertAttribute name="title" /></div>

但结果是未处理的 EL 表达式:

<div>${myBean.id} - ${myBean.name}</div>

此处的代码已被简化以保持这篇文章的简洁,但这正是我想要做的。我尝试这样做也是有原因的。

知道为什么不处理 EL 表达式吗?

谢谢

注意:我对 JSP 和 Apache Tiles 相当陌生,所以我可能没有使用正确的术语。

4

1 回答 1

6

我只是想指出巴里的回答(在他对原帖的评论中)帮助了我。你需要tiles-el.jar在你的类路径上有(如果你想使用标准的 EL;大概你需要对应的 MVEL 或 OGNL 的 JAR)。

Tiles 2.关于AttributeEvaluator,如果您使用 Spring,以下是如何设置它:

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles/**/views.xml</value>
        </list>
    </property>

    <!-- Initialize expression language support for use in Tiles definitions. -->
    <property name="tilesProperties">
        <props>
            <prop key="org.apache.tiles.evaluator.AttributeEvaluator">org.apache.tiles.evaluator.el.ELAttributeEvaluator</prop>
        </props>
    </property>        
</bean>

Tiles 3。Tiles 3的 SpringTilesConfigurer自动检查 JSP API 2.1 和 Tiles EL JAR 的类路径。如果它同时找到它们,它会自动创建一个 EL 感知属性评估器。

于 2011-12-04T09:19:46.990 回答