Java SpringMVC:消息源似乎没有指向属性
这件事我已经耽搁了好几天了 这是我的WebMvcConfig类:Java SpringMVC:消息源似乎没有指向属性,java,spring,internationalization,Java,Spring,Internationalization,这件事我已经耽搁了好几天了 这是我的WebMvcConfig类: package utils; import Beans.Users; import com.mycompany.fanalweb.backingbeans.Roles; import java.util.HashSet; import java.util.Locale; import java.util.Set; import org.springframework.context.MessageSource; import o
package utils;
import Beans.Users;
import com.mycompany.fanalweb.backingbeans.Roles;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
import org.thymeleaf.templateresolver.TemplateResolver;
@ComponentScan({"com.mycompany.fanalweb.controllers", "com.mycompany.fanalweb.backingbeans", "utils", "Utils"})
@ImportResource({"classpath:SpringConfig.xml", "WEB-INF/webflow-config.xml", "WEB-INF/aop-config.xml"})
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public ViewResolver viewResolver() {
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setCacheable(false);
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".xhtml");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(1);
ServletContextTemplateResolver flowResolver = new ServletContextTemplateResolver();
flowResolver.setCacheable(false);
flowResolver.setPrefix("/WEB-INF/flows/");
flowResolver.setSuffix(".xhtml");
flowResolver.setTemplateMode("HTML5");
flowResolver.setCharacterEncoding("UTF-8");
flowResolver.setOrder(0);
Set<TemplateResolver> set = new HashSet<>();
set.add(flowResolver);
set.add(templateResolver);
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolvers(set);
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setContentType("text/html; charset=UTF-8");
viewResolver.setOrder(1);
viewResolver.setTemplateEngine(templateEngine);
return viewResolver;
}
//session users and roles
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Users sessionUser() {
Users u = new Users();
return u;
}
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Roles sessionRoles() {
Roles u = new Roles();
return u;
}
//internationalization
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.ENGLISH);
return localeResolver;
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/international/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
package-utils;
导入豆子。用户;
导入com.mycompany.fanalweb.backingbeans.Roles;
导入java.util.HashSet;
导入java.util.Locale;
导入java.util.Set;
导入org.springframework.context.MessageSource;
导入org.springframework.context.annotation.Bean;
导入org.springframework.context.annotation.ComponentScan;
导入org.springframework.context.annotation.Configuration;
导入org.springframework.context.annotation.ImportResource;
导入org.springframework.context.annotation.Scope;
导入org.springframework.context.annotation.ScopedProxy模式;
导入org.springframework.context.support.ReloadableResourceBundleMessageSource;
导入org.springframework.context.support.ResourceBundleMessageSource;
导入org.springframework.web.servlet.LocaleResolver;
导入org.springframework.web.servlet.viewsolver;
导入org.springframework.web.servlet.config.annotation.EnableWebMvc;
导入org.springframework.web.servlet.config.annotation.InterceptorRegistry;
导入org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
导入org.springframework.web.servlet.config.annotation.WebMVCConfigureAdapter;
导入org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
导入org.springframework.web.servlet.i18n.SessionLocaleResolver;
导入org.thymeleaf.spring4.SpringTemplateEngine;
导入org.thymeleaf.spring4.view.thymeleafviewsolver;
导入org.thymeleaf.templateresolver.ServletContextTemplateResolver;
导入org.thymeleaf.templateresolver.templateresolver;
@组件扫描({“com.mycompany.fanalweb.controllers”、“com.mycompany.fanalweb.backingbeans”、“utils”、“utils”})
@ImportResource({“classpath:SpringConfig.xml”、“WEB-INF/webflow config.xml”、“WEB-INF/aop config.xml”})
@配置
@EnableWebMvc
公共类WebMvcConfig扩展了WebMVCConfigureAdapter{
@凌驾
public void addResourceHandlers(ResourceHandlerRegistry注册表){
registry.addResourceHandler(“/resources/**”).addResourceLocations(“/resources/”);
}
@豆子
公共ViewResolver ViewResolver(){
ServletContextTemplateResolver templateResolver=新的ServletContextTemplateResolver();
templateResolver.setCacheable(false);
setPrefix(“/WEB-INF/templates/”);
templateResolver.setSuffix(“.xhtml”);
setTemplateMode(“HTML5”);
templateResolver.setCharacterEncoding(“UTF-8”);
templateResolver.setOrder(1);
ServletContextTemplateResolver flowResolver=新的ServletContextTemplateResolver();
flowResolver.setCacheable(假);
setPrefix(“/WEB-INF/flows/”);
flowResolver.setSuffix(“.xhtml”);
setTemplateMode(“HTML5”);
flowResolver.setCharacterEncoding(“UTF-8”);
flowResolver.setOrder(0);
Set=newhashset();
set.add(flowResolver);
set.add(templateResolver);
SpringTemplateEngine templateEngine=新的SpringTemplateEngine();
templateEngine.SetTemplateResolver(集合);
ThymileAfViewResolver viewResolver=新的ThymileAfViewResolver();
viewResolver.setCharacterEncoding(“UTF-8”);
setContentType(“text/html;charset=UTF-8”);
viewResolver.setOrder(1);
viewResolver.setTemplateEngine(templateEngine);
返回视图解析器;
}
//会话用户和角色
@豆子
@范围(value=“session”,proxyMode=ScopedProxyMode.TARGET\u类)
公共用户sessionUser(){
用户u=新用户();
返回u;
}
@豆子
@范围(value=“session”,proxyMode=ScopedProxyMode.TARGET\u类)
公共角色sessionRoles(){
角色u=新角色();
返回u;
}
//国际化
@豆子
公共LocaleResolver LocaleResolver(){
SessionLocaleResolver localeResolver=新建SessionLocaleResolver();
setDefaultLocale(Locale.ENGLISH);
返回本地解算器;
}
@豆子
public MessageSource MessageSource(){
ReloadableResourceBundleMessageSource=新的ReloadableResourceBundleMessageSource();
messageSource.setBasename(“/international/messages”);
messageSource.setDefaultEncoding(“UTF-8”);
返回消息源;
}
@豆子
公共LocaleChangeInterceptor LocaleChangeInterceptor(){
LocaleChangeInterceptor LocaleChangeInterceptor=新的LocaleChangeInterceptor();
setParamName(“语言”);
返回localeChangeInterceptor;
}
@凌驾
公共无效附加接收器(侦听器注册表){
addInterceptor(localeChangeInterceptor());
}
}
这是我的WebAppInitializer:
package utils;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{
SecurityConfig.class,
WebMvcConfig.class
};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
package-utils;
导入org.springframework.web.servlet.support.AbstractAnnotationConfigDispatchersServletInitializer;
公共类WebAppInitializer扩展AbstractAnnotationConfigDispatcherServletInitializer{
@凌驾
受保护类[]getRootConfigClasses(){
返回新类[]{
SecurityConfig.class,
WebMvcConfig.class
};
}
@凌驾
受保护类[]getServletConfigClasses(){
返回null;
}
@凌驾
受保护的字符串[]getServletMappings(){
返回新字符串[]{”/“};
}
}
该应用程序启动良好,但在我的登录页面上,我的“国际文本”没有翻译。
例如,我有:?user.mail_en??用户密码\u en
我的属性文件位于:src/main/resources/international
它们被称为:messages.properties和messages\u fr.properties
我已经试过了:
- 将它们放入WEB-INF,但没有成功
- 更改messageSource.setBasename(“/international/messages”);至messageSource.setBasename(“国际/消息”);=>N
classpath:/international/messages