Struts2 在找不到键时更改Struts 2、i18n类的行为

Struts2 在找不到键时更改Struts 2、i18n类的行为,struts2,internationalization,jsp-tags,Struts2,Internationalization,Jsp Tags,我们在操作中使用了getText,在验证器中使用了setMessageKey,在i18n应用程序的jsp文件中使用了 当Struts 2在资源包中找不到密钥时,它会返回密钥本身。例如form.transfer.confirm 我们如何改变这种行为,而不是让键本身Struts2返回空字符串。您需要创建TextProvider的自定义实现,并覆盖其中的getText方法 1) 创建类(例如EmptyDefaultTextProvider),扩展现有实现之一(例如TextProviderSupport

我们在操作中使用了
getText
,在验证器中使用了
setMessageKey
,在i18n应用程序的jsp文件中使用了

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


我们如何改变这种行为,而不是让键本身Struts2返回空字符串。

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

1) 创建类(例如
EmptyDefaultTextProvider
),扩展现有实现之一(例如
TextProviderSupport

2) 覆盖所有的
getText
方法,如下所示:

publicstringgettext(stringkey,stringdefaultvalue){
返回super.getText(键“”);
}
3) 使用自定义类作为默认文本提供程序。将下面的内容放在struts.xml中


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

1) 创建类(例如
EmptyDefaultTextProvider
),扩展现有实现之一(例如
TextProviderSupport

2) 覆盖所有的
getText
方法,如下所示:

publicstringgettext(stringkey,stringdefaultvalue){
返回super.getText(键“”);
}
3) 使用自定义类作为默认文本提供程序。将下面的内容放在struts.xml中



似乎重写
getText(字符串键、字符串默认值、列表参数)
将确保所有调用都被重写。@AlirezaFattahi至少还有
getText(字符串键、字符串默认值、字符串[]参数)
和两个
getText(字符串键、字符串默认值、列表参数、值堆栈)
。如果您的操作不使用struts 2的ActionSupport,则只有在您注入容器,然后使用容器注入TextProviderFactory时,上述操作才有效。有关示例,请参阅ActionSupport的源代码。似乎重写
getText(字符串键、字符串默认值、列表参数)
将确保所有调用都被重写。@AlirezaFattahi至少还有
getText(字符串键、字符串默认值、字符串[]参数)
和两个
getText(String key、String defaultValue、List args、ValueStack stack)
。如果您的操作不使用struts 2的ActionSupport,则只有在您注入容器,然后使用容器注入TextProviderFactory时,上述操作才有效。有关示例,请参阅ActionSupport的源代码。