【问题标题】:Tiles Struts /EL ExpressionsTiles Struts /EL 表达式
【发布时间】:2011-11-09 08:07:00
【问题描述】:

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

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

【问题讨论】:

    标签: struts2 tiles


    【解决方案1】:

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

    我会先尝试最简单的方法(尽管从长远来看它可能不适合您的需求):使用 getDashboardLabel 函数(或其他任何函数)公开操作中的值,从而调用 getText。这应该允许简单的属性查询${dashboardLabel}

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

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

    哦,你也可以创建一个 JSP 函数库;不过,我不确定这将如何与 EL 评估器一起工作。使用 JSP 很容易。

    【讨论】:

    • 谢谢戴夫。正如你所说,似乎没有简单的方法来解决这个问题。最后,我刚刚创建了一个从 Tiles 获取属性窗格标题的 JSP,并在标记 s:text 中使用它,因此我可以在其他人中使用该 JSP,并在 tiles.xml 中设置密钥。虽然我认为您提出的第二个选项会很有趣,它更容易集成 Struts2 和 Tiles。
    • @JoseLMartinez-Avial 是的,那行得通。我把第二个选项放在我的(太长的)要考虑的事情清单中——我同意,这是一个有趣的想法,可能会很酷。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多