在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); } }
是不是很简单啊?
相关推荐
Spring MVC 是一个建立在中央前端控制器servlet(DispatcherServlet)的MVC模式Web框架,它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。Spring MVC 是 Spring 产品组合的一部分,它享有 ...
Spring MVC允许你将应用的逻辑、数据和用户界面分离,使得代码更加清晰和易于维护。 MyBatis: MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置...
【源码】mysql版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...
java获取jsp源码 这是初学者到专家 Spring MVC 教程。 我们在所有示例中都使用了最新版本的 Spring Framework 5+。 本教程为您提供构建基于 Spring 的企业 J2EE Web 应用程序或 RESTful API 所需的所有可能的 Spring...
在此展示中,您将看到以下内容: 最简单的@Controller 映射请求 获取请求数据 产生回应 讯息转换器 渲染视图 类型转换 验证 形式 上传文件 异常处理 要获取代码: 克隆存储库: $ git clone git://github....
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...
获取Spring Boot 2微框架的可重用代码配方和代码段 了解Spring Boot 2如何与其他Spring API,工具和框架集成 访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring ...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
Spring Web Reactive 在 spring-webmvc 模块中现有的(而且很流行)Spring Web MVC旁边的新的 spring-web-reactive 模块中。 请注意,在 Spring5 中,传统的 SpringMVC 支持 Servlet3.1 上运行,或者支持 JavaEE7 的...
在此展示中,您将看到以下内容: 最简单的@Controller 映射请求 获取请求数据 生成响应 消息转换器 渲染视图 类型转换 验证 形式 上传文件 异常处理 获取代码: 克隆存储库: $ git clone git://github....
使用Spring MVC或Spring Boot中打印或记录日志一般使用AOP记录Request请求和Response响应参数,在不使用AOP的前提下,如果在Filter中打印日志,在打印或消费请求类型为Content-Type:application/json的请求时,会...
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. ...
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...
Spring源代码解析2:IoC容器在Web容器中的启动;Spring源代码解析3:Spring JDBC ; Spring源代码解析4:Spring MVC ;Spring源代码解析5:Spring AOP获取Proxy;Spring源代码解析6:Spring声明式事务处理 ; ...
【源码】oracle版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...
微信公众号网页支付java实现, 框架spring mvc , 代码可以参考
Spring MVC 使用示例 通过简单的示例演示Spring MVC的强大功能。 项目内容 @Controller注解使用 Mapping请求 获取请求数据 生成响应 消息转换器 渲染视图 数据类型转换 校验机制 表单标签 文件上传 异常处理 运行...