【问题标题】:How to get different Spring label message on the same screen for different context of application如何在同一屏幕上为不同的应用程序上下文获取不同的 Spring 标签消息
【发布时间】:2017-03-20 11:48:30
【问题描述】:

我在一个应用程序中有不同的上下文(比如 A 和 B),它为两个上下文使用相同的屏幕,但我在屏幕字段上显示了不同的标签名称。

资源包如下。

对于上下文 A,sample.code=Text From Application A 进入 sampleA.properties

对于上下文 B,sample.code=Text From Application B 进入 sampleB.properties

而且,我可以将上下文与会话属性区分开来。在这种情况下,我如何覆盖Spring MessageTag 并阅读有关上下文集的消息?

JSP:<spring:message code="sample.code" />

感谢您的帮助。

【问题讨论】:

    标签: java spring spring-mvc resourcebundle


    【解决方案1】:

    为不同的servlet上下文配置单独注册ResourceBundleMessageSource

    例如。在您的 AbstractAnnotationConfigDispatcherServletInitializer 上

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        // root context
        AnnotationConfigWebApplicationContext rootContext =
                new AnnotationConfigWebApplicationContext();
        rootContext.register(RootConfig.class); // configuration class for root context
    
        servletContext.addListener(new ContextLoaderListener(rootContext));
    
        // dispatcher servlet 1
        AnnotationConfigWebApplicationContext webContext1 = 
                new AnnotationConfigWebApplicationContext();
        webContext1.setParent(rootContext);
        webContext1.register(WebConfig1.class); // configuration class for servlet 1
    
        ServletRegistration.Dynamic dispatcher1 =
        servletContext.addServlet("dispatcher1", new DispatcherServlet(webContext1));
        dispatcher1.setLoadOnStartup(1);
        dispatcher1.addMapping("/subcontext1");
    
        // dispatcher servlet 2
       AnnotationConfigWebApplicationContext webContext2 = 
                new AnnotationConfigWebApplicationContext();
        webContext1.setParent(rootContext);
        webContext1.register(WebConfig2.class); // configuration class for servlet 1
    
        ServletRegistration.Dynamic dispatcher2 =
        servletContext.addServlet("dispatcher2", new DispatcherServlet(webContext2));
        dispatcher2.setLoadOnStartup(1);
        dispatcher2.addMapping("/subcontext1");
    
    }
    

    WebConfig1

    @Bean
        public ResourceBundleMessageSource configureResourceBundleMessageSource() {
        ResourceBundleMessageSource resource = new ResourceBundleMessageSource();
        resource.setBasename("sampleA");
        return resource;
    }
    

    WebConfig2

    @Bean
        public ResourceBundleMessageSource configureResourceBundleMessageSource() {
        ResourceBundleMessageSource resource = new ResourceBundleMessageSource();
        resource.setBasename("sampleB");
        return resource;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-05
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多