歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Spring MVC在代碼中獲取國際化信息

本文基於Spring MVC國際化。

在Spring MVC國際化一文中描述了如何實現Spring的國際化,也描述了在jsp頁面中如何獲取國際化信息,本文描述如何在java代碼中獲取國際化信息。

在Java代碼中,獲取國際化信息使用org.springframework.web.context.WebApplicationContext的getMessage方法,getMessage方法中需要使用當前的Locale信息,於是,怎樣獲取國際化信息集中在以下兩點:

1. 如何獲取WebApplicationContext?

2. 如何獲取當前使用的Locale?

首先,如何獲取WebApplicationContext呢,很簡單,在任何一個類實現org.springframework.web.context.ServletContextAware並重寫其setServletContext方法,如下所示:

  1. public class MenuServiceImpl implements MenuService, ServletContextAware {  
  2.         private ServletContext servletContext;  
  3.   
  4.     /* 
  5.      * (non-Javadoc) 
  6.      *  
  7.      * @see 
  8.      * org.springframework.web.context.ServletContextAware#setServletContext 
  9.      * (javax.servlet.ServletContext) 
  10.      */  
  11.     @Override  
  12.     public void setServletContext(ServletContext servletContext) {  
  13.         this.servletContext = servletContext;  
  14.     }  
  15.   
  16.     public void test() {  
  17.         WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);  
  18.     }  
  19. }  

       如此,我們取得了WebApplicationContext信息。

        其次,如何獲取當前使用的Locale信息?一行代碼搞定:

  1. Locale locale = RequestContextUtils.getLocaleResolver(request).resolveLocale(request);  
        WebApplicationContext信息和Locale信息都獲取到後,再用一行代碼獲取國際化信息:
  1. String menuName = applicationContext.getMessage("text.menu.name",null"菜單A", locale);  
        在getMessage中有四個變量,依次分別為message_*.properties文件中的key,key中{0}、{1}等對應的值,默認值和Locale。
Copyright © Linux教程網 All Rights Reserved