详解Spring MVC自动为对象注入枚举类型
如果一个对象里面有枚举类型的话,则springMVC是不能够直接进行注入的,因为它只实现了一些基本的数据类型的自动转换注入,但是其也提供了可扩展的接口,可以根据自己的需要来进行扩展。下面是一个示例:
首先:这是一个枚举类:
/** *新闻类别 *@author:ShangJianguo *2014-6-11上午10:51:07 */ publicenumENews{ company("0"),//企业新闻 industry("1");//行业新闻 privatefinalStringvalue; privateENews(Stringv){ this.value=v; } publicStringtoString(){ returnthis.value; } publicstaticENewsget(intv){ Stringstr=String.valueOf(v); returnget(str); } publicstaticENewsget(Stringstr){ for(ENewse:values()){ if(e.toString().equals(str)){ returne; } } returnnull; } }
下面是个实体类:
publicclassNews{ privateENewstype; privateStringadminuid; privateStringtitle; privateStringsummary; privateStringauthor; privateStringorigin; privateStringoriginurl; privateStringcontent; //省略setter和getter方法 }
这里是controller层:
@RequestMapping(value="/news/update",method=RequestMethod.POST) @ResponseBody publicbooleanedit_update(Mapmodel,HttpServletRequestrequest,Newsnews){ Stringadminid=getAdminid(); news.init(adminSO.getAdminByAdminid(adminid).getUid()); if(news!=null){ if(newsSO.update(news)){ returntrue; } } returnfalse; }
但是,到了这里程序还不能够正常的运行,真正的要点在下面,写一个枚举的转换类(Converter):
publicclassStringToENewsConverterimplementsConverter{ /*(non-Javadoc) *@seecom.fasterxml.jackson.databind.util.Converter#convert(java.lang.Object) *@author:ShangJianguo *2014-6-12下午4:56:30 */ @Override publicENewsconvert(Stringsource){ Stringvalue=source.trim(); if("".equals(value)){ returnnull; } returnENews.get(Integer.parseInt(source)); } }
然后在springmvc的配置文件中进行配置:
这样spring在进行对对象的字段进行注入的时候就可以运行了,直接把前端接收来的内容转换为ENews类型,进行封装。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。