我正在使用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
所以我想我错过了什么,但我不知道为什么。有什么想法吗?
答案 0 :(得分:0)
我不相信这会起作用;您正在尝试将OGNL表达式评估为普通的旧JSP EL。我看到了几个潜在的解决方案。
我首先尝试最简单的方法(尽管从长远来看可能不适合您的需求):使用getDashboardLabel
函数(或其他)公开动作中的值,使{{1}打电话。此应该允许简单的属性查询getText
。
这取决于Tiles解析EL当前请求如何解析EL:S2使用瘦包装器将值堆栈暴露给JSP EL。
如果这不起作用或不适合您的需求,我认为下一个方法是看看您是否可以创建一个访问值堆栈并替换${dashboardLabel}
的Tiles属性赋值器。我不确定那将是多么容易/多难,我必须检查。如果你可以像现有的Struts标签一样评估OGNL,那可能会非常有趣。
哦,你也可以创建一个JSP函数库;不过,我不确定这对EL评估器有何影响;使用JSP非常简单。