欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • Java Base64算法實(shí)際應(yīng)用之郵件發(fā)送實(shí)例分析

    Java Base64算法實(shí)際應(yīng)用之郵件發(fā)送實(shí)例分析

    這篇文章主要介紹了Java Base64算法實(shí)際應(yīng)用之郵件發(fā)送,結(jié)合實(shí)例形式分析了java字符編碼與郵件發(fā)送相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • Java項(xiàng)目Guava包?HashMultimap使用及注意事項(xiàng)

    Java項(xiàng)目Guava包?HashMultimap使用及注意事項(xiàng)

    guava基本上可以說(shuō)是java開(kāi)發(fā)項(xiàng)目中,大概率會(huì)引入的包,今天介紹的主角是一個(gè)特殊的容器HashMultmap,可以簡(jiǎn)單的將它的數(shù)據(jù)結(jié)構(gòu)理解為Map<K,?Set<V>>,今天主要介紹下基礎(chǔ)的知識(shí)點(diǎn)?HashMultmap級(jí)使用,感興趣的朋友一起看看吧
    2022-05-05
  • SpringBoot配置和切換Tomcat流程詳解

    SpringBoot配置和切換Tomcat流程詳解

    這篇文章主要介紹了如何給springboot配置和切換默認(rèn)的Tomcat容器以及相關(guān)的經(jīng)驗(yàn)技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java實(shí)現(xiàn)的對(duì)稱加密算法AES定義與用法詳解

    Java實(shí)現(xiàn)的對(duì)稱加密算法AES定義與用法詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)的對(duì)稱加密算法AES,結(jié)合實(shí)例形式分析了對(duì)稱加密算法AES的定義、特點(diǎn)、用法及使用場(chǎng)景,需要的朋友可以參考下
    2018-04-04
  • JPA之使用JPQL語(yǔ)句進(jìn)行增刪改查

    JPA之使用JPQL語(yǔ)句進(jìn)行增刪改查

    這篇文章主要介紹了JPA之使用JPQL語(yǔ)句進(jìn)行增刪改查,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 解決Spring Cloud中Feign/Ribbon第一次請(qǐng)求失敗的方法

    解決Spring Cloud中Feign/Ribbon第一次請(qǐng)求失敗的方法

    這篇文章主要給大家介紹了關(guān)于解決Spring Cloud中Feign/Ribbon第一次請(qǐng)求失敗的方法,文中給出了三種解決的方法,大家可以根據(jù)需要選擇對(duì)應(yīng)的方法,需要的朋友們下面來(lái)一起看看吧。
    2017-02-02
  • Java利用Phantomjs實(shí)現(xiàn)生成圖片的功能

    Java利用Phantomjs實(shí)現(xiàn)生成圖片的功能

    這篇文章主要介紹了Java利用Phantomjs實(shí)現(xiàn)生成圖片的功能,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • springboot+EHcache 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新

    springboot+EHcache 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新

    這篇文章主要介紹了springboot+EHcache 實(shí)現(xiàn)文章瀏覽量的緩存和超時(shí)更新,問(wèn)題描述和解決思路給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2017-04-04
  • java  List循環(huán)與Map循環(huán)的總結(jié)

    java List循環(huán)與Map循環(huán)的總結(jié)

    這篇文章主要介紹了java List循環(huán)與Map循環(huán)的總結(jié)的相關(guān)資料,并附代碼實(shí)例,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2016-11-11
  • Java Date類的使用案例詳解

    Java Date類的使用案例詳解

    這篇文章主要介紹了Java Date類的使用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論