服务器之家

服务器之家 > 正文

详解Spring MVC自动为对象注入枚举类型

时间:2020-09-16 15:58     来源/作者:white__cat

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

首先:这是一个枚举类:

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

下面是个实体类:

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

这里是controller层:

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

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

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/white__cat/article/details/55061741

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址 2020-08-12
最新idea2020注册码永久激活(激活到2100年)
最新idea2020注册码永久激活(激活到2100年) 2020-07-29
返回顶部