未找到键时更改 Struts 2、i18n 类的行为 [英] Change Struts 2, i18n classes behavior when key is not found
问题描述
我们在操作中使用 getText
,在验证器中使用 setMessageKey
,在 i18n 应用程序的 jsp 文件中使用 <s:text>
.p>
当 Struts 2 在资源包中找不到键时,它会返回键本身.例如 form.transfer.confirm
.
我们如何改变这种行为,而不是键本身 Struts2 返回空字符串.
您需要创建 TextProvider
的自定义实现并覆盖其中的 getText
方法.
1) 创建类(例如 EmptyDefaultTextProvider
)扩展 TextProvider
现有实现之一(例如 TextProviderSupport
).
2) 像这样覆盖所有 getText
方法:
public String getText(String key, String defaultValue) {返回 super.getText(key, "");}
3) 使用您的自定义类作为默认文本提供程序.放在struts.xml下面.
<constant name="struts.xworkTextProvider" value="emptyDefaultTextProvider"/><bean type="com.opensymphony.xwork2.TextProvider" name="emptyDefaultTextProvider"class="packagepath.EmptyDefaultTextProvider" scope="default"/>
We used getText
in actions, setMessageKey
in validators and <s:text>
in jsp files for an i18n application.
When Struts 2 could not find a key in resource bundles it returns the key itself. For example form.transfer.confirm
.
How can we change this behavior in the way that instead of the key itself Struts2 returns empty string.
You need to create custom implementation of TextProvider
and override getText
methods in it.
1) Create class (e.g. EmptyDefaultTextProvider
) extending one of TextProvider
existing implementations (e.g. TextProviderSupport
).
2) Override all getText
methods like that:
public String getText(String key, String defaultValue) {
return super.getText(key, "");
}
3) Use your custom class as the default text provider. Put below in struts.xml.
<constant name="struts.xworkTextProvider" value="emptyDefaultTextProvider" />
<bean type="com.opensymphony.xwork2.TextProvider" name="emptyDefaultTextProvider"
class="packagepath.EmptyDefaultTextProvider" scope="default" />
这篇关于未找到键时更改 Struts 2、i18n 类的行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!