在jsp端我用的是JSTL的<fmt:message>,在java端怎么获取国际化消息那?通过那个类和方法那?spring mvc国际化jstl

解决方案 »

  1.   

    <beans:bean
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
    id="messageSource" p:basenames="WEB-INF/i18n/messages"
    p:fallbackToSystemLocale="false" />
    配置上是这么做,获取直接用Spring的getBean获取
      

  2.   

    spring mvc我代码基本看过,最经典的,可扩展的
    public static String getLocaleMessage(HttpServletRequest request,Object[] args,String code){
            WebApplicationContext ac = RequestContextUtils.getWebApplicationContext(request);
            return ac.getMessage(code,args, RequestContextUtils.getLocale(request));
        }
    args可以为null,如果你request也不提供的话可以通过threadLocale获得request
    /**
         * @return {@link HttpServletRequest}
         */
        private static HttpServletRequest getRequest() {
            return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        }
      

  3.   

    国际化LocaleResolver有四个实现类
    固定,根据header,session,cookie
    后面连个要自己设,
    主题页有类似功能
      

  4.   

    如果没有request,
    就直接取
         public static String getMessage(String key, Locale locale)
        {
            
            ResourceBundle resourceBundle = ResourceBundle.getBundle(Global.RESOURCES_PATH,
                    locale);
            
            if (resourceBundle.containsKey(key))
            {
                return resourceBundle.getString(key);
            }
            
            return key;
        }