服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 详解Spring MVC自动为对象注入枚举类型

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

2020-09-16 15:58white__cat Java教程

本篇文章主要介绍了Spring MVC自动为对象注入枚举类型,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

如果一个对象里面有枚举类型的话,则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

延伸 · 阅读

精彩推荐