从Struts 2.3.33迁移到Struts 2.5.12 LocalizedTextUtil已删除 [英] Migrate from Struts 2.3.33 to Struts 2.5.12 LocalizedTextUtil is removed
问题描述
我们试图从Struts 2.33迁移到Struts 2.5.12.
We tried to migrate from Struts 2.33 to Struts 2.5.12.
我们直接在应用程序中使用了LocalizedTextUtil
.
We used LocalizedTextUtil
in our application directly.
我发现从com.opensymphony.xwork2.util.LocalizedTextUtil
中删除了LocalizedTextUtil
.我试图搜索但找不到任何东西
I found that the LocalizedTextUtil
is removed from com.opensymphony.xwork2.util.LocalizedTextUtil
. I tried to search but could not find any thing
我发现了某些类,例如StrutsLocalizedTextProvider
和GlobalLocalizedTextProvider
,但似乎它们不是我可以使用的类.
I found some classes like StrutsLocalizedTextProvider
and GlobalLocalizedTextProvider
but it seems they are not what I can use them.
我已经查看了迁移指南,但是找不到有关它.
I have reviewed migration-guide but could not find any comment about it.
有哪些替代方法?
推荐答案
struts.xml应设置为:
The struts.xml should be set as:
<constant name="struts.xworkTextProvider" value="DefaultTextProvider" />
<bean type="com.opensymphony.xwork2.TextProvider" name="DefaultTextProvider" class="utils.CustomTextProvider" scope="default" />
CustomStrutsTextProviderFactory
可以添加捆绑包
public class MyTextProviderFactory implements TextProviderFactory {
protected LocaleProviderFactory localeProviderFactory;
protected LocalizedTextProvider localizedTextProvider;
@Inject
public MyTextProviderFactory(LocaleProviderFactory localeProviderFactory, LocalizedTextProvider localizedTextProvider) {
this.localeProviderFactory = localeProviderFactory;
this.localizedTextProvider = localizedTextProvider;
this.localizedTextProvider.addDefaultResourceBundle("messages/label");
this.localizedTextProvider.addDefaultResourceBundle("messages/customerA/label");
}
@Override
public TextProvider createInstance(Class clazz) {
TextProvider instance = getTextProvider(clazz);
if (instance instanceof ResourceBundleTextProvider) {
((ResourceBundleTextProvider) instance).setClazz(clazz);
((ResourceBundleTextProvider) instance).setLocaleProvider(localeProviderFactory.createLocaleProvider());
}
return instance;
}
@Override
public TextProvider createInstance(ResourceBundle bundle) {
TextProvider instance = getTextProvider(bundle);
if (instance instanceof ResourceBundleTextProvider) {
((ResourceBundleTextProvider) instance).setBundle(bundle);
((ResourceBundleTextProvider) instance).setLocaleProvider(localeProviderFactory.createLocaleProvider());
}
return instance;
}
protected TextProvider getTextProvider(Class clazz) {
return new TextProviderSupport(clazz, localeProviderFactory.createLocaleProvider(), localizedTextProvider);
}
protected TextProvider getTextProvider(ResourceBundle bundle) {
return new TextProviderSupport(bundle, localeProviderFactory.createLocaleProvider(), localizedTextProvider);
}
}
完整积分@LukazLenart https://issues.apache.org/jira/浏览/WW-4829
Complete credits to @LukazLenart https://issues.apache.org/jira/browse/WW-4829
这篇关于从Struts 2.3.33迁移到Struts 2.5.12 LocalizedTextUtil已删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!