`
Rainbow702
  • 浏览: 1065451 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类

spring mvc中,如何在 Java 代码里,获取 国际化 内容

阅读更多

在spring MVC中,要想实现国际化,必须要在xml中定义如下:

 

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>messages</value>
        </list>
    </property>
</bean>

 其中,id 的值必须是 “messageSource”,否则会报错。

 

list里的是你国际化文件的名称(上面那么写的话,那么,这份文件应该是放置于classpath根目录下的)。

以上的配置,估计有过sping MVC开发经验的童鞋都是知道的。

 

我今天遇到一个需求是,要在java代码中获取国际化文件中的内容。

以前如果是使用struts2的话,很容易实现,只要任意一个类继承 ActionSupport ,然后就可以使用getText()之类的方法去获取了。

但在spring中,没有这种类供来继承。

那怎么办呢,只好另想它法了。

首先,我想到的是,既然它是一个被声明好的bean,那么,应该可以使用 @Autowired 标签来绑定吧。于是我写了如下的代码:

 

public class Const {
	@Autowired
	private static ResourceBundleMessageSource rms
	
	public static String getTextValue(String key) {
		return rms.getMessage(key, null, null);
	}
}

以为可以完美解决这个问题的。但事实总是残酷的,你会发现,rms 的值一直是null,也就是说注入失败了。至于为什么失败,我现在还没想明白,有知道的童鞋还麻烦指点一下。

 

后来在网上查到,“ApplicationContext” 这个接口继承了“MessageSource”接口,那么我们只要获取项目的 ApplicationContext 的实现类,就可以通过 getMessage() 方法来获取国际化文件内容了。

那么要如何简单方便的来获取 ApplicationContext 的实现类呢?这个时候就需要另一个接口了,即“ApplicationContextAware”,任何类实现这个接口,均会被注入  ApplicationContext 。

那还等什么,赶快来试一下吧:

public class SpringUtil implements ApplicationContextAware {
	private static ApplicationContext applicationContext;

	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	@Override
	public void setApplicationContext(ApplicationContext arg0) throws BeansException {
		applicationContext = arg0;
	}

	public static Object getBean(String id) {
		Object object = null;
		object = applicationContext.getBean(id);
		return object;
	}
}

当然,必须要将上面的 SpringUtil 类在xml文件中配置一下,才能让它被spring框架读取,然后给它注入 ApplicationContext。配置很简单:

<bean id="SpringUtil" class="util.SpringUtil"/>

这样就行了,然后,去改一下上面的Const类吧:

public class Const {
	
	public static String getTextValue(String key) {
		return SpringUtil.getApplicationContext().getMessage(key, null, null);
	}
}

是不是很简单啊?

分享到:
评论
2 楼 lgywindows 2017-04-10  
我照你的方法实现了在java中取国际化。谢谢提供!
1 楼 lemon_yt 2016-07-03  
正在找  

相关推荐

    【Mybatis、SpringMVC单独配置及测试代码】

    Spring MVC 是一个建立在中央前端控制器servlet(DispatcherServlet)的MVC模式Web框架,它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。Spring MVC 是 Spring 产品组合的一部分,它享有 ...

    Spring+MVC+Mybatis 书城项目

    Spring MVC允许你将应用的逻辑、数据和用户界面分离,使得代码更加清晰和易于维护。 MyBatis: MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    【源码】mysql版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...

    java获取jsp源码-spring-mvc-tutorial:SpringMVC5教程-springmvc框架指南

    java获取jsp源码 这是初学者到专家 Spring MVC 教程。 我们在所有示例中都使用了最新版本的 Spring Framework 5+。 本教程为您提供构建基于 Spring 的企业 J2EE Web 应用程序或 RESTful API 所需的所有可能的 Spring...

    spring-mvc-showcase:演示Spring MVC Web框架的功能

    在此展示中,您将看到以下内容: 最简单的@Controller 映射请求 获取请求数据 产生回应 讯息转换器 渲染视图 类型转换 验证 形式 上传文件 异常处理 要获取代码: 克隆存储库: $ git clone git://github....

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    用于获取Spring Bean依赖关系图的工具(高分毕设).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Spring Boot 2 Recipes

    获取Spring Boot 2微框架的可重用代码配方和代码段 了解Spring Boot 2如何与其他Spring API,工具和框架集成 访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring ...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    Spring_Framework_ API_5.0.5 (CHM格式)

    Spring Web Reactive 在 spring-webmvc 模块中现有的(而且很流行)Spring Web MVC旁边的新的 spring-web-reactive 模块中。 请注意,在 Spring5 中,传统的 SpringMVC 支持 Servlet3.1 上运行,或者支持 JavaEE7 的...

    spring-mvc-showcase

    在此展示中,您将看到以下内容: 最简单的@Controller 映射请求 获取请求数据 生成响应 消息转换器 渲染视图 类型转换 验证 形式 上传文件 异常处理 获取代码: 克隆存储库: $ git clone git://github....

    在Spring MVC或Spring Boot中使用Filter打印请求参数问题

    使用Spring MVC或Spring Boot中打印或记录日志一般使用AOP记录Request请求和Response响应参数,在不使用AOP的前提下,如果在Filter中打印日志,在打印或消费请求类型为Content-Type:application/json的请求时,会...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. ...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    springyuanmaaping.zip

    Spring源代码解析2:IoC容器在Web容器中的启动;Spring源代码解析3:Spring JDBC ; Spring源代码解析4:Spring MVC ;Spring源代码解析5:Spring AOP获取Proxy;Spring源代码解析6:Spring声明式事务处理 ; ...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 oracle版本_spring3.0

    【源码】oracle版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...

    微信jsapi网页支付

    微信公众号网页支付java实现, 框架spring mvc , 代码可以参考

    spring-mvc-examples:Spring MVC使用示例代码,涵盖多个方面的内容

    Spring MVC 使用示例 通过简单的示例演示Spring MVC的强大功能。 项目内容 @Controller注解使用 Mapping请求 获取请求数据 生成响应 消息转换器 渲染视图 数据类型转换 校验机制 表单标签 文件上传 异常处理 运行...

Global site tag (gtag.js) - Google Analytics