详解Spring MVC自动为对象注入枚举类型
程序员文章站
2024-02-29 11:08:22
如果一个对象里面有枚举类型的话,则spring mvc是不能够直接进行注入的,因为它只实现了一些基本的数据类型的自动转换注入,但是其也提供了可扩展的接口,可以根据自己的需要...
如果一个对象里面有枚举类型的话,则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类型,进行封装。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。