java - Strust 2.15 如何覆盖 TextProviderSupport 以自定义资源包消息

标签 java struts2 localization

在 struts 2.3 中,要覆盖我们在下面使用的 TextProvider

在 struts.xml 中设置 bean:

<bean type="com.opensymphony.xwork2.TextProvider" name="DefaultTextProvider" class="util.CustomTextProvider" scope="default" />

并制作CustomTextProvider

public class CustomTextProvider extends DefaultTextProvider{

public String getText(String key, String defaultValue, List<?> args) {
        String text = super.getText(key, defaultValue, args);
        //Do something with the text
        //and return it
    }

 //other getText methods can be override too
}

这似乎不适用于 Struts 2.15.2。

当我放置一些断点时,我的方法都没有被调用,似乎我的 bean 没有注册。

我认为 StrutsLocalizedTextProvider 可能是要覆盖的那个。但似乎我无法定义扩展它的 bean。 我收到此错误:

Unable to load configuration. - bean - file:/E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/WEB-INF/classes/struts.xml:12:156
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
    at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:960)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:466)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:499)
    at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:75)
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:63)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4590)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)
Caused by: Unable to load bean: type:com.opensymphony.xwork2.LocalizedTextProvider class:utils.CustomLocalizedTextProvider - bean - file:/E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/WEB-INF/classes/struts.xml:12:156
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:271)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:98)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:164)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:63)
    ... 17 more
Caused by: Bean type interface com.opensymphony.xwork2.LocalizedTextProvider with the name struts has already been loaded by [unknown location] - bean - file:/E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/WEB-INF/classes/struts.xml:12:156

你能告诉我如何处理它吗?!

最佳答案

Caused by: Bean type interface com.opensymphony.xwork2.LocalizedTextProvider with the name struts has already been loaded

您不应该使用相同的接口(interface)加载一个 bean 两次。如果你想获得容器加载的 bean 实例,你应该使用 DI。由于 DI 没有文档并且不受 Struts 支持,因此我不建议您使用它。


如果您需要自定义文本提供程序,您可以创建自己的文本提供程序,如 this 中所述。回答。

You could create your own text provider and register it in struts.xml:

<constant name="struts.xworkTextProvider" value="util.CustomTextProvider"/>

关于java - Strust 2.15 如何覆盖 TextProviderSupport 以自定义资源包消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390339/

相关文章:

java - 不同数据源的@Transaction注解

java - 错误: Unknown column 'DTYPE' in 'field list'

java - 从Struts2中的堆栈中删除拦截器

java - 安卓/Java : How to code if-statements based on localisation-settings?

java - 日期月份本地化

javascript - 我希望能够根据角色类别及其阵营选择神灵列表

java - 为什么我的字符串不是固定大小?

java - Struts 2操作调用丢失xwork i18n语言设置

java - struts2-json-plugin JSONWriter 注入(inject)实战

java - 如何为GWT编译器指定参数 "extra"的相对路径?