详解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类型,进行封装。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。