从Struts 2.3.33迁移到Struts 2.5.12 LocalizedTextUtil已删除 [英] Migrate from Struts 2.3.33 to Struts 2.5.12 LocalizedTextUtil is removed

查看:1690
本文介绍了从Struts 2.3.33迁移到Struts 2.5.12 LocalizedTextUtil已删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们试图从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

我发现了某些类,例如StrutsLocalizedTextProviderGlobalLocalizedTextProvider,但似乎它们不是我可以使用的类.

I found some classes like StrutsLocalizedTextProviderand 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屋!

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