詳解Spring MVC自動(dòng)為對(duì)象注入枚舉類型
如果一個(gè)對(duì)象里面有枚舉類型的話,則spring MVC是不能夠直接進(jìn)行注入的,因?yàn)樗粚?shí)現(xiàn)了一些基本的數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換注入,但是其也提供了可擴(kuò)展的接口,可以根據(jù)自己的需要來(lái)進(jìn)行擴(kuò)展。下面是一個(gè)示例:
首先:這是一個(gè)枚舉類:
/**
* 新聞?lì)悇e
* @author: ShangJianguo
* 2014-6-11 上午10:51:07
*/
public enum ENews {
company("0"), // 企業(yè)新聞
industry("1");// 行業(yè)新聞
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;
}
}
下面是個(gè)實(shí)體類:
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;
}
但是,到了這里程序還不能夠正常的運(yùn)行,真正的要點(diǎn)在下面,寫一個(gè)枚舉的轉(zhuǎn)換類(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的配置文件中進(jìn)行配置:
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.ngenius.core.converters.StringToENewsConverter" />
</set>
</property>
</bean>
這樣spring在進(jìn)行對(duì)對(duì)象的字段進(jìn)行注入的時(shí)候就可以運(yùn)行了,直接把前端接收來(lái)的內(nèi)容轉(zhuǎn)換為ENews類型,進(jìn)行封裝。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
spring中IOC控制反轉(zhuǎn)依賴注入和new對(duì)象的區(qū)別說(shuō)明
這篇文章主要介紹了spring中IOC控制反轉(zhuǎn)依賴注入和new對(duì)象的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
maven打包成第三方j(luò)ar包且把pom依賴包打入進(jìn)來(lái)的方法
這篇文章主要介紹了maven打包成第三方j(luò)ar包且把pom依賴包打入進(jìn)來(lái)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
java實(shí)現(xiàn)創(chuàng)建臨時(shí)文件然后在程序退出時(shí)自動(dòng)刪除文件
這篇文章主要介紹了java實(shí)現(xiàn)創(chuàng)建臨時(shí)文件然后在程序退出時(shí)自動(dòng)刪除文件,從個(gè)人項(xiàng)目中提取出來(lái)的,小伙伴們可以直接拿走使用。2015-02-02
Spring Boot實(shí)現(xiàn)文件上傳示例代碼
本篇文章主要介紹了Spring Boot實(shí)現(xiàn)文件上傳示例代碼,可以實(shí)現(xiàn)單文件和多文件的上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
Java中new Date().getTime()指定時(shí)區(qū)的時(shí)間戳問(wèn)題小結(jié)
本文主要介紹了Java中new Date().getTime()時(shí)間戳問(wèn)題小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
java中對(duì)象和JSON格式的轉(zhuǎn)換方法代碼
JSON格式可以輕松地以面向?qū)ο蟮姆绞睫D(zhuǎn)換為Java對(duì)象,下面這篇文章主要給大家介紹了關(guān)于java中對(duì)象和JSON格式的轉(zhuǎn)換方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
springboot2.0以上調(diào)度器配置線程池的實(shí)現(xiàn)
這篇文章主要介紹了springboot2.0以上調(diào)度器配置線程池的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12

