Struts 2 s:如果使用getText

时间:2016-01-16 06:12:44

标签: jsp if-statement struts2 internationalization

我想查看消息包中是否显示了消息密钥。所以我尝试了以下但没有一个工作:

<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

中完成所有工作

1 个答案:

答案 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>

或使用hasKey(String key)

检查密钥
  

检查是否存在消息密钥。

<s:if test="hasKey('site.message')">
   Please consider: <s:text name="site.message"/>
</s:if>
<s:else>
   <s:text name="error.message"/>
</s:else>