Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC:消息源似乎没有指向属性_Java_Spring_Internationalization - Fatal编程技术网

Java SpringMVC:消息源似乎没有指向属性

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

这件事我已经耽搁了好几天了

这是我的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 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