在 getText() 中使用 Struts2 s:set 变量
Using Struts2 s:set variables with getText()
将 Struts2 与 JSP 结合使用。以下代码工作正常:
<s:if test="foo == bar">
<s:set var="keyValue">message.string1</s:set>
</s:if>
<s:else>
<s:set var="keyValue">message.string2</s:set>
</s:else>
<s:text name="%{keyValue}"/>
即根据keyValue
的值,从资源文件中查找message.string1
或message.string2
并正确输出到结果HTML页面。
但是,如 Struts tag documentation 底部所述,对于属性值中的 i18n,我不能使用 Struts 文本标记,而必须使用 getText('...')
:
<s:submit value="getText('message.string1')" ../>
问题是,我无法在上面的 getText()
调用中解决 %{keyValue}
,无论我尝试什么语法:getText('%{keyValue}')
、getText(%{keyValue})
、getText(keyValue)
, getText('keyValue')
它最终被评估为 null。这是我的语法错误还是根本无法完成?如果必须的话,我知道我可以返回使用 <s:if>
和 <s:else>
,每个标签下都有一个提交标签:
<s:if test="foo == bar">
<s:submit value="getText('message.string1')" ../>
</s:if>
<s:else>
<s:submit value="getText('message.string2')" ../>
</s:else>
...但我想尽可能避免重复。
虽然普通 keyValue
在大多数情况下都有效,但最好在 <s:set>
标签的 var
值前加上 #
前缀。
您应该只在整个表达式周围使用一对 %{}
。
<s:submit value="%{getText(#keyValue)}" />
将 Struts2 与 JSP 结合使用。以下代码工作正常:
<s:if test="foo == bar">
<s:set var="keyValue">message.string1</s:set>
</s:if>
<s:else>
<s:set var="keyValue">message.string2</s:set>
</s:else>
<s:text name="%{keyValue}"/>
即根据keyValue
的值,从资源文件中查找message.string1
或message.string2
并正确输出到结果HTML页面。
但是,如 Struts tag documentation 底部所述,对于属性值中的 i18n,我不能使用 Struts 文本标记,而必须使用 getText('...')
:
<s:submit value="getText('message.string1')" ../>
问题是,我无法在上面的 getText()
调用中解决 %{keyValue}
,无论我尝试什么语法:getText('%{keyValue}')
、getText(%{keyValue})
、getText(keyValue)
, getText('keyValue')
它最终被评估为 null。这是我的语法错误还是根本无法完成?如果必须的话,我知道我可以返回使用 <s:if>
和 <s:else>
,每个标签下都有一个提交标签:
<s:if test="foo == bar">
<s:submit value="getText('message.string1')" ../>
</s:if>
<s:else>
<s:submit value="getText('message.string2')" ../>
</s:else>
...但我想尽可能避免重复。
虽然普通 keyValue
在大多数情况下都有效,但最好在 <s:set>
标签的 var
值前加上 #
前缀。
您应该只在整个表达式周围使用一对 %{}
。
<s:submit value="%{getText(#keyValue)}" />