Tiles Struts / EL表达式

时间:2011-11-09 08:07:01

标签: struts2 tiles

我正在使用Struts 2.2.3和Tiles 2.1.4。它工作得很好,但现在我正在尝试使用EL表达式,我无法让它工作。在Struts2中,我可以使用<s:property value="${getText('Dashboard.label')}"/>并从包中检索消息。我想在Tiles Definition上使用相同的内容。到目前为止,我已将context-param添加到web.xml

<context-param>
  <param-name>org.apache.tiles.evaluator.AttributeEvaluator</param-name>
  <param-value>org.apache.tiles.evaluator.el.ELAttributeEvaluator</param-value>
</context-param>

现在我想在定义中使用以下表达式:

<put-attribute name="pane-title"
               expression="${getText('Dashboard.label')}"
               cascade="true"/>

问题在于,当我这样做时,屏幕无法创建说:

功能':找不到getText

所以我想我错过了什么,但我不知道为什么。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不相信这会起作用;您正在尝试将OGNL表达式评估为普通的旧JSP EL。我看到了几个潜在的解决方案。

我首先尝试最简单的方法(尽管从长远来看可能不适合您的需求):使用getDashboardLabel函数(或其他)公开动作中的值,使{{1}打电话。此应该允许简单的属性查询getText

这取决于Tiles解析EL当前请求如何解析EL:S2使用瘦包装器将值堆栈暴露给JSP EL。

如果这不起作用或不适合您的需求,我认为下一个方法是看看您是否可以创建一个访问值堆栈并替换${dashboardLabel}的Tiles属性赋值器。我不确定那将是多么容易/多难,我必须检查。如果你可以像现有的Struts标签一样评估OGNL,那可能会非常有趣。

哦,你也可以创建一个JSP函数库;不过,我不确定这对EL评估器有何影响;使用JSP非常简单。