原文地址:http://1358440610-qq-com.iteye.com/blog/2079048

如果一个对象里面有枚举类型的话,则Spring MVC是不能够直接进行注入的,因为它只实现了一些基本的数据类型的自动转换注入,但是其也提供了可扩展的接口,可以根据自己的需要来进行扩展。下面是一个示例:

首先:这是一个枚举类:

  1. /**
  2. * 新闻类别
  3. * @author: ShangJianguo
  4. * 2014-6-11 上午10:51:07
  5. */
  6. public enum ENews {
  7. company("0"), // 企业新闻
  8. industry("1");// 行业新闻
  9. private final String value;
  10. private ENews(String v) {
  11. this.value = v;
  12. }
  13. public String toString() {
  14. return this.value;
  15. }
  16. public static ENews get(int v) {
  17. String str = String.valueOf(v);
  18. return get(str);
  19. }
  20. public static ENews get(String str) {
  21. for (ENews e : values()) {
  22. if(e.toString().equals(str)) {
  23. return e;
  24. }
  25. }
  26. return null;
  27. }
  28. }

下面是个实体类:

  1. public class News {
  2. private ENews type;
  3. private String adminuid;
  4. private String title;
  5. private String summary;
  6. private String author;
  7. private String origin;
  8. private String originurl;
  9. private String content;
  10. // 省略setter和getter方法
  11. }

这里是controller层:

  1. @RequestMapping(value="/news/update", method=RequestMethod.POST)
  2. @ResponseBody
  3. public boolean edit_update(Map<String, Object> model,HttpServletRequest request,News news){
  4. String adminid = getAdminid();
  5. news.init(adminSO.getAdminByAdminid(adminid).getUid());
  6. if (news != null) {
  7. if (newsSO.update(news)) {
  8. return true;
  9. }
  10. }
  11. return false;
  12. }

但是,到了这里程序还不能够正常的运行,真正的要点在下面,写一个枚举的转换类(Converter):

  1. public class StringToENewsConverter implements Converter<String, ENews>{
  2. /* (non-Javadoc)
  3. * @see com.fasterxml.jackson.databind.util.Converter#convert(java.lang.Object)
  4. * @author: ShangJianguo
  5. * 2014-6-12 下午4:56:30
  6. */
  7. @Override
  8. public ENews convert(String source) {
  9. String value = source.trim();
  10. if ("".equals(value)) {
  11. return null;
  12. }
  13. return ENews.get(Integer.parseInt(source));
  14. }
  15. }

然后在spring mvc的配置文件中进行配置:

  1. <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
  2. <property name="converters">
  3. <set>
  4. <bean class="com.ngenius.core.converters.StringToENewsConverter" />
  5. </set>
  6. </property>
  7. </bean>

这样spring在进行对对象的字段进行注入的时候就可以运行了,直接把前端接收来的内容转换为ENews类型,进行封装。

Spring MVC 自动为对象注入枚举类型的更多相关文章

  1. Spring MVC自动为对象注入枚举数据

    一.实现转换工厂,定义转换实现,如下:     package com.mafwo; import org.springframework.core.convert.converter.Convert ...

  2. Spring MVC通过Pageable对象和PageableDefault注解获取分页信息(MongoDB通过Pageable来操作分页)

    说明:Pageable同时也能用于操作MongoDB的分页. PageableSpring Data库中定义的一个接口,该接口是所有分页相关信息的一个抽象,通过该接口,我们可以得到和分页相关所有信息( ...

  3. Spring:所有依赖项注入的类型

    一.前言 Spring文档严格只定义了两种类型的注入:构造函数注入和setter注入.但是,还有更多的方式来注入依赖项,例如字段注入,查找方法注入.下面主要是讲使用Spring框架时可能发生的类型. ...

  4. JAVA高级特性--自动拆箱-装箱,枚举类型

    基本数据类型转换为引用类型对象 一个自动装箱的例子 Integer i=10; 相当于 Integer i=new Integer(10); 一个自动拆箱的例子 Integer m=10; int n ...

  5. hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题

    引用地址 在使用Spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例: @RequestMapping("login") ...

  6. hibernate+spring mvc,解决hibernate对象懒加载,json序列化失败

    在使用spring MVC时,@ResponseBody 注解的方法返回一个有懒加载对象的时候出现了异常,以登录为例: @RequestMapping("login") @Resp ...

  7. Spring MVC自定义消息转换器(可解决Long类型数据传入前端精度丢失的问题)

    1.前言 对于Long 类型的数据,如果我们在Controller层通过@ResponseBody将返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在Long长度大于17位时会出现精度 ...

  8. Spring MVC 属性文件读取注入到静态字段

    目录(?)[-] servlet-contextxml configproperties 示例属性 ConfigInfo 对应的配置bean 使用   在项目中,有些参数需要配置到属性文件xxx.pr ...

  9. spring mvc中,直接注入的HttpServletRequst是否安全呢?

    看似很简单的一个问题,借此追踪下spring的源码处理 在写springMVC的Control中有很多这种代码, 如需要获取request对象去做某些事情 如: @Controller @Reques ...

随机推荐

  1. java-Set集合、HashSet集合、LinkedHashSet集合和TreeSet集合

    1.Set集合,无索引,不可以重复,无序(存取不一致) public class Demo { public static void main(String[] args) { //demo1(); ...

  2. 成功的拆开了SELECT里JOIN个SELECT是啥

    SELECT * FROM table JOIN table ON a=b ----------------------- JOIN (SELECT* FROM table JOIN table ON ...

  3. CodeForces - 455D

    Serega loves fun. However, everyone has fun in the unique manner. Serega has fun by solving query pr ...

  4. Ubuntu16.04安装YouCompleteMe

    1.要求vim的版本在7.4.143以上,支持python2/3,通过vim --version查看. 2.下载源码:  https://github.com/Valloric/YouComplete ...

  5. maven整合ssh框架笔记

    具体工程会上传文件sshpro <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:x ...

  6. 1.4 安装Linux系统

    按F2进入BIOS,设置通过[CD/ROM]启动,如果是真实计算机,安装完后还需要重新设置为[硬盘启动] 设置分区如下图所示:

  7. 各CF-based tracker中output_sigma_factor取值

    现有的各CF-Based tracker中理想高斯响应中output_sigma_factor的取值情况 默认output_sigma = target_sz*output_sigma_factor; ...

  8. springmvc log4j配置

    1. web.xml <!-- 加载Log4J 配置文件 --> <context-param> <param-name>log4jConfigLocation&l ...

  9. 【python】变量的赋值、深浅拷贝

    python——赋值与深浅拷贝 https://www.cnblogs.com/Eva-J/p/5534037.html 啥都不说,看这个博主的文章!

  10. PCLVisualizer可视化类

    PCLVisualizer可视化类 转载自 http://www.cnblogs.com/li-yao7758258/p/6445127.html 如有疑问,请转至该网址留言询问 PCLVisuali ...