未找到键时更改 Struts 2、i18n 类的行为 [英] Change Struts 2, i18n classes behavior when key is not found

查看:33
本文介绍了未找到键时更改 Struts 2、i18n 类的行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们在操作中使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆