我想查看消息包中是否显示了消息密钥。所以我尝试了以下但没有一个工作:
<s:if test=" getText('site.message') == 'site.message'">
<s:if test=" getText('site.message').equals('site.message')">
<s:if test=" %{getText('site.message').equals('site.message')}">
但是这种解决方法运行良好:
<s:text name="site.message" var="test"/>
<s:if test=" #test=='site.message'">
Please consider: <s:text name="site.message"/>
</s:if>
因此可以省略#test变量并在s:if
答案 0 :(得分:2)
如果您使用<s:text>
的正文作为默认邮件而不是<s:if>
标记的正文,则可以。来自文档页面
如果在属性文件中找不到指定的消息,则标记的正文将用作默认消息。如果没有使用正文,则将搜索堆栈,如果返回值,则会将其写入输出。如果堆栈中未找到任何值,则将写出消息的密钥。然后,您可以使用另一个键来设置默认消息。
等效代码
<s:text name="site.message"><s:text name="error.message"/></s:text>
还要考虑getText(String aTextName, String defaultValue)
的默认值。
根据键获取消息,或者,如果未找到消息,则返回提供的默认值。
然后你可以使用
<s:if test="getText('site.message','') != ''">
Please consider: <s:text name="site.message"/>
</s:if>
<s:else>
<s:text name="error.message"/>
</s:else>
检查密钥
检查是否存在消息密钥。
<s:if test="hasKey('site.message')">
Please consider: <s:text name="site.message"/>
</s:if>
<s:else>
<s:text name="error.message"/>
</s:else>