Spring MVC處理參數(shù)中的枚舉類型通用實現(xiàn)方法
前言
在開發(fā)的過程中,會涉及到大量的枚舉類型數(shù)據(jù),我們都知道,Springmvc本身能自動轉(zhuǎn)換很多的數(shù)據(jù)類型,也支持你自定義轉(zhuǎn)換類型,非常靈活。
本文主要介紹的是關于Spring MVC處理參數(shù)的枚舉類型通用實現(xiàn)的相關內(nèi)容,下面話不多說了,來一起看看詳細的介紹吧
業(yè)務場景:
前端提交了枚舉的一個屬性value,想由spring來完成參數(shù)類型自動轉(zhuǎn)換成對應的枚舉。
比方有一個枚舉
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum RegisterStatus implements SpringConverterableEnum {
WAITING(0, "待審核"),
PASSED(1, "已通過"),
REJECTED(2, "已拒絕");
private int value;
private String desc;
}
實現(xiàn)統(tǒng)一自定義接口
需要自動轉(zhuǎn)換的枚舉實現(xiàn)統(tǒng)一自定義接口,可隨意定義,此處直接用get方法
public interface SpringConverterableEnum {
int getValue();
}
實現(xiàn)ConverterFactory
實現(xiàn)某一個class的類型自動轉(zhuǎn)換,實現(xiàn)converter接口。要實現(xiàn)能支持多種枚舉的通用轉(zhuǎn)換,應當實現(xiàn)ConverterFactory接口。
實現(xiàn)中利用class提供的getEnumConstants來獲得任意枚舉類型的values
public class ValuedEnumConverter implements ConverterFactory<String, SpringConverterableEnum> {
@Override
public <T extends SpringConverterableEnum> Converter<String, T> getConverter(Class<T> targetType) {
return new IntegerToEnum(targetType);
}
private class IntegerToEnum<T extends SpringConverterableEnum> implements Converter<String, T> {
private final T[] values;
public IntegerToEnum(Class<T> targetType) {
values = targetType.getEnumConstants();
}
@Override
public T convert(String source) {
for (T t : values) {
if (t.getValue() == Integer.valueOf(source)) {
return t;
}
}
return null;
}
}
}
注冊到Spring中
<mvc:annotation-driven conversion-service="conversionService"/> <bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionService"> <property name="converters"> <list> <bean class="com... ValuedEnumConverter"/> </list> </property> </bean>
之后,form或者ajax提交registerStatus=1時,則會自動轉(zhuǎn)換為枚舉對象。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
springmvc接收json串,轉(zhuǎn)換為實體類List方法
今天小編就為大家分享一篇springmvc接收json串,轉(zhuǎn)換為實體類List方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
本章具體介紹了HashMap、TreeMap兩種集合的基本使用方法和區(qū)別,圖解穿插代碼實現(xiàn)。?JAVA成仙路從基礎開始講,后續(xù)會講到JAVA高級,中間會穿插面試題和項目實戰(zhàn),希望能給大家?guī)韼椭?/div> 2022-03-03
springboot中server.ssl.key-store配置路徑的問題小結(jié)
這篇文章主要介紹了springboot中server.ssl.key-store配置路徑的問題,文中還記錄了Spring Boot SSL(https)實例,介紹在web程序中使用自簽名的SSL(HTTPS)證書及創(chuàng)建SSL認證,感興趣的朋友跟隨小編一起看看吧2024-02-02
Spring Cloud體系實現(xiàn)標簽路由的方法示例
這篇文章主要介紹了Spring Cloud體系實現(xiàn)標簽路由的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
springBoot使用openfeign來遠程調(diào)用的實現(xiàn)
這篇文章主要介紹了springBoot使用openfeign來遠程調(diào)用的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03最新評論

