Apache 图块定义中的 EL 表达式未处理

发布于 2024-11-30 11:39:12 字数 821 浏览 2 评论 0原文

我使用 Apache 切片进行模板化,模板的一部分是标题文本。该文本取决于页面所属的部分。每个页面都包含一个 bean,标题文本是使用该 bean 的属性构建的。每个页面的 bean 都有不同的名称。 因此,在我的 JSP 文件中,我会有这样的内容:

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

我想在图块定义中获取该表达式,我尝试了以下操作:

<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 还很陌生,所以我可能没有使用正确的术语。

I am using Apache tiles for templating and part of the template is a header text. This text depends on the section the page belongs to. Each page contains a bean and the header text is built using the properties of that bean. The bean will have a different name for each page.
So, in my JSP file I would have something like this:

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

I want to get that expression in the tile definition and I tried this:

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

And in the template I do:

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

But the result is the unprocessed EL expression:

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

The code has been simplified here to keep this post concise but this is exactly what I'm trying to do. There are also reasons why I am trying to do it this way.

Any idea why the EL expresion is not being processed?

Thanks

NOTE: I am fairly new to JSP and Apache Tiles so I may not have used the correct terminology.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海少女心 2024-12-07 11:39:12

我只是想指出巴里的回答(在他对原帖的评论中)帮助了我。您的类路径中需要有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. Spring 的 TilesConfigurer< Tiles 3 的 /code> 自动检查 JSP API 2.1 和 Tiles EL JAR 的类路径。如果它找到它们,它会自动创建一个 EL 感知的属性评估器。

I just wanted to point out that Barry's answer (in his comment on the original post) helped me out. You need to have tiles-el.jar on your classpath (if you want to use the standard EL; presumably you need the corresponding JARs for MVEL or OGNL).

Tiles 2. Regarding AttributeEvaluator, here's how you can set that up if you're using 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. Spring's TilesConfigurer for Tiles 3 automatically checks the classpath for the JSP API 2.1 and Tiles EL JARs. If it finds them both, it automatically creates an EL-aware attribute evaluator.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文