Después de de una larga búsqueda de información resolvimos este asunto que pueden tener algunos los lectores. Te regalamos la solución y esperamos resultarte de mucha apoyo.
chico, tal vez puedas cambiar la configuración xml de la siguiente manera:
usar
org.springframework.context.support.ReloadableResourceBundleMessageSource
en vez de
org.springframework.context.support.ResourceBundleMessageSource
toda la configuración como esta:
Cambie su configuración a la siguiente para el bean messageSource en su archivo xml.
classpath*:resourcebundles/messages
Dado que todos sus archivos de propiedades están en classpath de java, debe definir la ruta con prefix classpath*:
de lo contrario, buscará en el directorio web de su aplicación.
Espero que esto te ayude. Salud.
Es casi 2015 ahora y estoy usando Spring 4.1.2.RELEASE y definitivamente hay un problema con la forma en que se debe configurar el bean messageSource para que recoja el paquete de recursos de destino.
1) Si el bean messageSource es de tipo ReloadableResourceBundleMessageSource no funcionará:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
@Configuration
@ComponentScan(basePackages = "com.intertech.service" )
//@ImportResource("classpath:spring/applicationContext-i18n.xml")
public class AppConfig
@Bean(name = "messageSource")
public ReloadableResourceBundleMessageSource getMessageSource()
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("config/messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setUseCodeAsDefaultMessage(true);
return messageSource;
// @Bean(name = "messageSource")
// public ResourceBundleMessageSource getMessageSource()
// ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
// messageSource.setBasename("config/messages");
// messageSource.setDefaultEncoding("UTF-8");
// messageSource.setUseCodeAsDefaultMessage(true);
// return messageSource;
//
2) Si el bean messageSource es de tipo ResourceBundleMessageSource funcionará:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
@Configuration
@ComponentScan(basePackages = "com.intertech.service" )
//@ImportResource("classpath:spring/applicationContext-i18n.xml")
public class AppConfig
// @Bean(name = "messageSource")
// public ReloadableResourceBundleMessageSource getMessageSource()
// ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
// messageSource.setBasename("config/messages");
// messageSource.setDefaultEncoding("UTF-8");
// messageSource.setUseCodeAsDefaultMessage(true);
// return messageSource;
//
@Bean(name = "messageSource")
public ResourceBundleMessageSource getMessageSource()
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("config/messages");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setUseCodeAsDefaultMessage(true);
return messageSource;
3) Si está utilizando un archivo de configuración XML combinado con una clase de configuración, funcionará (observe cómo el paquete base está configurado en una clase como una forma de calificación, es decir, ‘config.messages’ no ‘config / messages’): (applicationContext -i18n.xml)
y:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
@ComponentScan(basePackages = "com.intertech.service" )
@ImportResource("classpath:spring/applicationContext-i18n.xml")
public class AppConfig
// @Bean(name = "messageSource")
// public ReloadableResourceBundleMessageSource getMessageSource()
// ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
// messageSource.setBasename("config/messages");
// messageSource.setDefaultEncoding("UTF-8");
// messageSource.setUseCodeAsDefaultMessage(true);
// return messageSource;
//
// @Bean(name = "messageSource")
// public ResourceBundleMessageSource getMessageSource()
// ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
// messageSource.setBasename("config/messages");
// messageSource.setDefaultEncoding("UTF-8");
// messageSource.setUseCodeAsDefaultMessage(true);
// return messageSource;
//
4) Lo más importante … si está utilizando un WebApplicationInitializer (no web.xml), debe registrar la clase de configuración que define el bean ‘messageSource’ en el contexto raíz, no en el contexto del servlet del despachador:
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
public class WebAppInitializer implements WebApplicationInitializer
@Override
public void onStartup(ServletContext container) throws ServletException
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(AppConfig.class);
// Manage the lifecycle of the root application context
container.addListener(new ContextLoaderListener(rootContext));
// Create the dispatcher servlet's Spring application context
AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext();
dispatcherServlet.register(MvcConfig.class);
// Register and map the dispatcher servlet
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(
dispatcherServlet));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("*.htm");
Sección de Reseñas y Valoraciones
Si haces scroll puedes encontrar las crónicas de otros programadores, tú asimismo eres capaz mostrar el tuyo si lo deseas.