我正在尝试将工具提示添加到一系列按钮中。文本是动态的,因为它需要一个参数(显示一个页码的文本),并且存储在global.properties
中:
page.nr.tooltip=Go to page {0}
我已经尝试过几件事,什么都不起:
title="<s:text name='page.nr.tooltip'>
<s:param value='pageNum' />
</s:text>"
我还尝试了设置一个变量并使用该变量:
<s:set var="ttStr" value="<s:text name='page.nr.tooltip'>
<s:param value='pageNum' />
</s:text>" />
,但我似乎也无法将其用作工具提示文本。尝试了这些(以及更多)
value="ttStr"
value="$ttStr"
value="#attr[#ttStr]"
不会显示文本。有什么建议么?JavaScript是不可能的,因为该应用程序必须在JS关闭的浏览器中运行。我可能缺少一些非常简单的东西...
编辑:
猜猜我需要澄清一下: pageNum
是我设置的变量:
<s:set var="pageNum" value="..." />
这是有效的,因为我可以使用它并且具有正确的值。我想将pageNum
作为变量添加到Tooltip-Text中,类似的内容:
<s:submit type="button" class="..."
title="<s:text name='page.nr.tooltip'>
<s:param value='pageNum' />
</s:text>">
...
这不会呈现工具提示。Go to page 4
&quot(或任何价值pagenum拥有的任何价值)。它呈现为"<s:text name='page.nr.tootip' ...
&quot - 换句话说,从上面的示例中引号中的确切文本。我知道如何设置和使用动作类中的变量 - 但是在这里无济于事。标题 - 属性不会呈现"到"页面。根本。即使我只是写
<s:submit type="button" class="..."
title="<s:text name='page.nr.tooltip'/>"
它显示<s:text name='page.nr.tooltip'/>
作为工具提示文本。惊讶的是这对我不起作用。
您不能在另一个标签属性中使用标签。使用<s:text>
标签的var
属性将值推到值堆栈。然后使用OGNL在<s:submit>
的title
属性中获取此值。
<s:text var="pageTooltip" name="page.nr.tooltip">
<s:param value="#pageNum"/>
</s:text>
<s:submit type="button" title="%{#pageTooltip}"/>
以下是从支柱本地化指南:
中的全球资源(
struts.properties
struts.custom.i18n.resources
)也可以通过编程指定一个全局资源捆绑包作为语言环境。
您还可以在struts.xml
<constant name="struts.custom.i18n.resources" value="/resources/global"/>
变量pageNum
应该有一个getter返回参数的值
<s:text name='page.nr.tooltip'>
<s:param value='pageNum' />
</s:text>
此代码将将消息文本渲染到OUT。如果您需要将此文本设置为一个支撑标签之一属性,则应使用OGNL。不要在属性内嵌套struts2标签。
<s:submit type="button" class="..."
title="%{getText('page.nr.tooltip', {pageNum})}" />
要使用getText
操作应实现ActionSupport
的TextProvider
。如果您的操作类扩展了ActionSupport
,则可以使用TextProvider
的默认实现并可以使用上面的代码。