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}"/>