更改 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" />
我们在操作中使用了 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" />