【问题标题】:Struts2 MessageResources in Apache TilesApache Tiles 中的 Struts2 MessageResources
【发布时间】:2012-12-04 22:16:42
【问题描述】:

我尝试在磁贴中使用 Struts2 消息资源但未成功 2.1.4 表达。例如,以下资源可在 JSP...

<s:text name="htmlheadHeading1"/><br/>

...但是当我尝试在图块定义中使用相同的资源时...

<put-attribute name="title" expression="${htmlheadHeading1}" />

...我收到错误消息...

ELResolver cannot handle a null base Object with identifier 'htmlheadHeading1'

...有什么办法吗??

【问题讨论】:

  • 你的htmlheadHeading1来自哪里?
  • 来自 struts2 消息资源 (i18n)。
  • 我很确定没有办法做你想做的事,因为你指定了瓷砖版本 2.1.4 但是如果你去瓷砖版本 2.2.2 或现在的瓷砖 3 你可以在切片定义中使用 OGNL 表达式,然后按照您的希望直接执行操作。
  • 听起来不错。我无法让瓷砖 2.2.2 与 struts2 一起使用。我必须把它放在次要位置。

标签: struts2 tiles2


【解决方案1】:

此解决方案不使用拼贴表达式,但如果您需要在通过拼贴定义传递键时在 JSP 中显示本地化文本,则该解决方案将起作用。

在瓷砖定义中:

<put-attribute name="title" value="htmlheadHeading1" />

然后在您的 JSP 中使用 Struts2 &lt;s:set&gt; 标记将标题从图块定义设置为局部变量,然后在 &lt;s:text&gt; 标记中使用它。

<s:set var="title">
  <tiles:getAsString name="title" ignore="true"/>
</s:set>
<s:text name="%{#title}"/>

【讨论】:

  • 是的,这确实适用于从瓦片定义到 struts2 标记的消息。我仍然无法解决如何从 struts2 获取消息到图块定义。
  • 目标是将所有消息保存在一个位置。
  • 什么意思?所有消息都在属性文件中。这只是一个关键。您想对切片定义中的属性文件中的文本做什么?
  • 让我们确保我们在同一页面上。 的最终值是什么?
  • 属性文件中带有键 htmlheadHeading1 的文本。你怎么看? :)
猜你喜欢
  • 2013-08-12
  • 2011-08-23
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
相关资源
最近更新 更多