从 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。
我们直接在我们的应用程序中使用了LocalizedTextUtil
。
我发现 LocalizedTextUtil
从 com.opensymphony.xwork2.util.LocalizedTextUtil
中删除了。我试图搜索但找不到任何东西
我找到了一些 类,比如 StrutsLocalizedTextProvider
和 GlobalLocalizedTextProvider
,但似乎它们不是我可以使用的。
我已查看 migration-guide 但找不到任何评论。
有什么选择?
你应该使用 StrutsLocalizedTextProvider
or GlobalLocalizedTextProvider
。他们有一些 util api,但是它被标记为已弃用。令人高兴的是,它记录在 javadoc 中。
我正在引用 repo 中的源代码,因为我无法在 Struts 2 Core 2.5.11-SNAPSHOT [=23= 的 javadoc 中找到这些 类 ]
struts.xml 应设置为:
<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/browse/WW-4829
我们尝试从 Struts 2.33 迁移到 Struts 2.5.12。
我们直接在我们的应用程序中使用了LocalizedTextUtil
。
我发现 LocalizedTextUtil
从 com.opensymphony.xwork2.util.LocalizedTextUtil
中删除了。我试图搜索但找不到任何东西
我找到了一些 类,比如 StrutsLocalizedTextProvider
和 GlobalLocalizedTextProvider
,但似乎它们不是我可以使用的。
我已查看 migration-guide 但找不到任何评论。
有什么选择?
你应该使用 StrutsLocalizedTextProvider
or GlobalLocalizedTextProvider
。他们有一些 util api,但是它被标记为已弃用。令人高兴的是,它记录在 javadoc 中。
我正在引用 repo 中的源代码,因为我无法在 Struts 2 Core 2.5.11-SNAPSHOT [=23= 的 javadoc 中找到这些 类 ]
struts.xml 应设置为:
<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/browse/WW-4829