更改 Struts 2, i18n 类 找不到密钥时的行为

Change Struts 2, i18n classes behavior when key is not found

我们在操作中使用了 getText,在验证器中使用了 setMessageKey,在 jsp 文件中使用了 <s:text> 用于 i18n 应用程序。

当 Struts 2 在资源包中找不到密钥时,它 returns 密钥本身。例如 form.transfer.confirm

我们如何改变这种行为而不是密钥本身 Struts2 returns 空字符串。

您需要创建 TextProvider 的自定义实现并覆盖其中的 getText 方法。

1) 创建 class(例如 EmptyDefaultTextProvider)扩展 TextProvider 现有实现之一(例如 TextProviderSupport)。

2) 像那样覆盖所有 getText 方法:

public String getText(String key, String defaultValue) {
     return super.getText(key, "");
}

3) 使用您的自定义 class 作为默认文本提供程序。放在下面 struts.xml.

<constant name="struts.xworkTextProvider" value="emptyDefaultTextProvider" />

<bean type="com.opensymphony.xwork2.TextProvider" name="emptyDefaultTextProvider" 
                              class="packagepath.EmptyDefaultTextProvider" scope="default" />