最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring MVC處理參數(shù)中的枚舉類型通用實(shí)現(xiàn)方法

 更新時(shí)間:2018年11月22日 16:31:34   作者:瘋狂阿賈克斯  
這篇文章主要給大家介紹了關(guān)于Spring MVC處理參數(shù)中的枚舉類型通用實(shí)現(xiàn)方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧

前言

在開(kāi)發(fā)的過(guò)程中,會(huì)涉及到大量的枚舉類型數(shù)據(jù),我們都知道,Springmvc本身能自動(dòng)轉(zhuǎn)換很多的數(shù)據(jù)類型,也支持你自定義轉(zhuǎn)換類型,非常靈活。

本文主要介紹的是關(guān)于Spring MVC處理參數(shù)的枚舉類型通用實(shí)現(xiàn)的相關(guān)內(nèi)容,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

業(yè)務(wù)場(chǎng)景:

前端提交了枚舉的一個(gè)屬性value,想由spring來(lái)完成參數(shù)類型自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的枚舉。

比方有一個(gè)枚舉

@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum RegisterStatus implements SpringConverterableEnum {
 WAITING(0, "待審核"),

 PASSED(1, "已通過(guò)"),

 REJECTED(2, "已拒絕");

 private int value;

 private String desc;
}

實(shí)現(xiàn)統(tǒng)一自定義接口

需要自動(dòng)轉(zhuǎn)換的枚舉實(shí)現(xiàn)統(tǒng)一自定義接口,可隨意定義,此處直接用get方法

public interface SpringConverterableEnum {
int getValue();
}

實(shí)現(xiàn)ConverterFactory

實(shí)現(xiàn)某一個(gè)class的類型自動(dòng)轉(zhuǎn)換,實(shí)現(xiàn)converter接口。要實(shí)現(xiàn)能支持多種枚舉的通用轉(zhuǎn)換,應(yīng)當(dāng)實(shí)現(xiàn)ConverterFactory接口。

實(shí)現(xiàn)中利用class提供的getEnumConstants來(lái)獲得任意枚舉類型的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;
 }
 }
}

注冊(cè)到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時(shí),則會(huì)自動(dòng)轉(zhuǎn)換為枚舉對(duì)象。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • springmvc接收json串,轉(zhuǎn)換為實(shí)體類List方法

    springmvc接收json串,轉(zhuǎn)換為實(shí)體類List方法

    今天小編就為大家分享一篇springmvc接收json串,轉(zhuǎn)換為實(shí)體類List方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Java?詳解Map集合之HashMap和TreeMap

    Java?詳解Map集合之HashMap和TreeMap

    本章具體介紹了HashMap、TreeMap兩種集合的基本使用方法和區(qū)別,圖解穿插代碼實(shí)現(xiàn)。?JAVA成仙路從基礎(chǔ)開(kāi)始講,后續(xù)會(huì)講到JAVA高級(jí),中間會(huì)穿插面試題和項(xiàng)目實(shí)戰(zhàn),希望能給大家?guī)?lái)幫助
    2022-03-03
  • 詳解spring cloud ouath2中的資源服務(wù)器

    詳解spring cloud ouath2中的資源服務(wù)器

    這篇文章主要介紹了spring cloud ouath2中的資源服務(wù)器的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • springboot中server.ssl.key-store配置路徑的問(wèn)題小結(jié)

    springboot中server.ssl.key-store配置路徑的問(wèn)題小結(jié)

    這篇文章主要介紹了springboot中server.ssl.key-store配置路徑的問(wèn)題,文中還記錄了Spring Boot SSL(https)實(shí)例,介紹在web程序中使用自簽名的SSL(HTTPS)證書及創(chuàng)建SSL認(rèn)證,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Spring Cloud體系實(shí)現(xiàn)標(biāo)簽路由的方法示例

    Spring Cloud體系實(shí)現(xiàn)標(biāo)簽路由的方法示例

    這篇文章主要介紹了Spring Cloud體系實(shí)現(xiàn)標(biāo)簽路由的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 全網(wǎng)最詳細(xì)Hutool工具詳解

    全網(wǎng)最詳細(xì)Hutool工具詳解

    Hutool的目標(biāo)是使用一個(gè)工具方法代替一段復(fù)雜代碼,從而最大限度的避免“復(fù)制粘貼”代碼的問(wèn)題,徹底改變我們寫代碼的方式。這篇文章主要介紹了全文最詳細(xì)Hutool工具詳解,需要的朋友可以參考下
    2021-12-12
  • Java中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式流程詳解

    Java中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式流程詳解

    中綴表達(dá)式是一個(gè)通用的算術(shù)或邏輯公式表示方法。,中綴表達(dá)式不容易被計(jì)算機(jī)解析,但仍被許多程序語(yǔ)言使用,因?yàn)樗先藗兊钠毡橛梅?。本文介紹了實(shí)現(xiàn)中綴表達(dá)式的方法,需要的可以參考一下
    2022-09-09
  • MyBatis還是JPA?終于有答案了

    MyBatis還是JPA?終于有答案了

    這篇文章主要介紹了MyBatis還是JPA,中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • springBoot使用openfeign來(lái)遠(yuǎn)程調(diào)用的實(shí)現(xiàn)

    springBoot使用openfeign來(lái)遠(yuǎn)程調(diào)用的實(shí)現(xiàn)

    這篇文章主要介紹了springBoot使用openfeign來(lái)遠(yuǎn)程調(diào)用的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 使用Java編寫串口程序的流程步驟

    使用Java編寫串口程序的流程步驟

    本文將介紹如何使用Java編寫串口程序,包括串口的基本概念、Java串口通信API的使用、串口程序的開(kāi)發(fā)流程以及一些常見(jiàn)問(wèn)題的解決方法等,希望通過(guò)本文的介紹,讀者能夠?qū)κ褂肑ava編寫串口程序有一個(gè)基本的了解,并能夠?qū)嵺`和應(yīng)用于實(shí)際項(xiàng)目中
    2023-11-11

最新評(píng)論

天长市| 沁水县| 邵东县| 景东| 新民市| 尉氏县| 桂东县| 望城县| 衡东县| 东安县| 丰县| 孟津县| 安达市| 铁力市| 资阳市| 东乌珠穆沁旗| 江口县| 政和县| 渭南市| 乌兰浩特市| 伊宁县| 巴彦县| 辉县市| 姚安县| 泸溪县| 都安| 新建县| 长葛市| 章丘市| 会泽县| 方山县| 阿荣旗| 收藏| 临西县| 永川市| 峨眉山市| 通江县| 瑞丽市| 阜阳市| 乌鲁木齐县| 陆丰市|