欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-18 15:21:10
...

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

 

首先:这是一个枚举类:

/**
 * 新闻类别
 * @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;
	}
}

 

下面是个实体类:

 

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层:

	@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):

 

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的配置文件中进行配置:

	<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类型,进行封装。

 

 私人广告模块。。。下面依然是我建的一个公众帐号,可以关注一下哦,谢谢

 

Spring MVC 自动为对象注入枚举类型
            
    
    博客分类: spring Springspring mvcConverter枚举类型