JSP 中的动态工具提示使用 Struts 2
Dynamic tooltip in JSP using Struts 2
我正在尝试向一系列按钮添加工具提示。文本是动态的,因为它需要一个参数(显示带有页码的文本)并存储在 global.properties
:
page.nr.tooltip=Go to page {0}
我尝试了几种方法,none 其中有效:
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' ...
”——换句话说,上面示例中引号中的确切文本。
我知道如何设置和使用操作 class 中的变量 - 虽然这对这里没有帮助。
title-attribute 根本不呈现值“Go to page”。就算我只写
<s:submit type="button" class="..."
title="<s:text name='page.nr.tooltip'/>"
它显示 <s:text name='page.nr.tooltip'/>
作为工具提示文本。很惊讶这对我不起作用。
以下内容来自Struts localization guide:
Global Resources (struts.custom.i18n.resources
) in struts.properties
A global resource bundle could be specified programmatically, as well
as the locale.
你也可以在struts.xml
中设置一个常量
<constant name="struts.custom.i18n.resources" value="/resources/global"/>
变量 pageNum
应该有一个 getter 到 return 参数值
<s:text name='page.nr.tooltip'>
<s:param value='pageNum' />
</s:text>
此代码会将消息文本呈现到外面。如果您需要将此文本设置为 Struts 标签属性之一,您应该使用 OGNL。不要在属性中嵌套 Struts2 个标签。
<s:submit type="button" class="..."
title="%{getText('page.nr.tooltip', {pageNum})}" />
要使用 getText
,操作应该实现 TextProvider
,即 ActionSupport
的用途。如果您的操作 class 扩展了 ActionSupport
那么您可以使用 TextProvider
的默认实现并可以使用上面的代码。
您不能在另一个标签属性中使用标签。使用 <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}"/>
我正在尝试向一系列按钮添加工具提示。文本是动态的,因为它需要一个参数(显示带有页码的文本)并存储在 global.properties
:
page.nr.tooltip=Go to page {0}
我尝试了几种方法,none 其中有效:
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' ...
”——换句话说,上面示例中引号中的确切文本。
我知道如何设置和使用操作 class 中的变量 - 虽然这对这里没有帮助。
title-attribute 根本不呈现值“Go to page”。就算我只写
<s:submit type="button" class="..."
title="<s:text name='page.nr.tooltip'/>"
它显示 <s:text name='page.nr.tooltip'/>
作为工具提示文本。很惊讶这对我不起作用。
以下内容来自Struts localization guide:
Global Resources (
struts.custom.i18n.resources
) instruts.properties
A global resource bundle could be specified programmatically, as well as the locale.
你也可以在struts.xml
<constant name="struts.custom.i18n.resources" value="/resources/global"/>
变量 pageNum
应该有一个 getter 到 return 参数值
<s:text name='page.nr.tooltip'>
<s:param value='pageNum' />
</s:text>
此代码会将消息文本呈现到外面。如果您需要将此文本设置为 Struts 标签属性之一,您应该使用 OGNL。不要在属性中嵌套 Struts2 个标签。
<s:submit type="button" class="..."
title="%{getText('page.nr.tooltip', {pageNum})}" />
要使用 getText
,操作应该实现 TextProvider
,即 ActionSupport
的用途。如果您的操作 class 扩展了 ActionSupport
那么您可以使用 TextProvider
的默认实现并可以使用上面的代码。
您不能在另一个标签属性中使用标签。使用 <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}"/>