我正在尝试向一系列按钮添加工具提示。该文本是动态的,因为它需要一个参数(显示带有页码的文本)并存储在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
作为变量添加到工具提示文本中,如下所示:
<s:submit type="button" class="..."
title="<s:text name='page.nr.tooltip'>
<s:param value='pageNum' />
</s:text>">
...
这不会将工具提示呈现为“Go to page 4
”(或者pageNum具有的任何值)。它呈现为“<s:text name='page.nr.tootip' ...
” - 换句话说,就是上面例子中引号中的确切文本。
我知道如何设置和使用动作类中的变量 - 虽然这在这里没有用。
title-attribute根本不会呈现值“Go to page”。即使我只是写
<s:submit type="button" class="..."
title="<s:text name='page.nr.tooltip'/>"
它显示<s:text name='page.nr.tooltip'/>
作为工具提示文本。很惊讶这对我不起作用。
答案 0 :(得分:1)
您不能在另一个标记属性中使用标记。使用var
标记的<s:text>
属性将值推送到值堆栈。然后使用OGNL在title
的{{1}}属性中获取此值。
<s:submit>
答案 1 :(得分:0)
以下内容来自Struts localization guide:
中的全局资源(
struts.custom.i18n.resources
struts.properties
)也可以通过编程方式指定全局资源包 作为语言环境。
您还可以在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。如果需要将此文本设置为Struts标记属性之一,则应使用OGNL。不要在属性中嵌套Struts2标记。
<s:submit type="button" class="..."
title="%{getText('page.nr.tooltip', {pageNum})}" />
要使用getText
,该操作应实现TextProvider
所针对的ActionSupport
。如果您的操作类扩展为ActionSupport
,那么您可以使用TextProvider
的默认实现,并可以使用上面的代码。