前言

在开发的过程中,会涉及到大量的枚举类型数据,我们都知道,Springmvc本身能自动转换很多的数据类型,也支持你自定义转换类型,非常灵活。

本文主要介绍的是关于Spring MVC处理参数的枚举类型通用实现的相关内容,下面话不多说了,来一起看看详细的介绍吧

业务场景:

前端提交了枚举的一个属性value,想由spring来完成参数类型自动转换成对应的枚举。

比方有一个枚举

@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;

}

实现统一自定义接口

需要自动转换的枚举实现统一自定义接口,可随意定义,此处直接用get方法

public interface SpringConverterableEnum {

int getValue();

}

实现ConverterFactory

实现某一个class的类型自动转换,实现converter接口。要实现能支持多种枚举的通用转换,应当实现ConverterFactory接口。

实现中利用class提供的getEnumConstants来获得任意枚举类型的values

public class ValuedEnumConverter implements ConverterFactory {

@Override

public Converter getConverter(Class targetType) {

return new IntegerToEnum(targetType);

}

private class IntegerToEnum implements Converter {

private final T[] values;

public IntegerToEnum(Class 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中

之后,form或者ajax提交registerStatus=1时,则会自动转换为枚举对象。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

java接口参数类型为枚举_Spring MVC处理参数中的枚举类型通用实现方法相关推荐

  1. c语言 函数不一定要指定类型,简答的理解C语言中的各种类型函数

    1.变参函数 变长参数的函数即参数个数可变.参数类型不定 的函数.最常见的例子是printf函数.scanf函数和高级语言的Format函数.在C/C++中,为了通知编译器函数的参数个数和类型可变(即 ...

  2. c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...

    pycharm能干嘛_后端开发 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示 ...

  3. java调用视图如何传参_Spring MVC中 视图 向 控制器 传参(接收方式)

    1.方法一(通过HttpServletRequest方式接收) 1.1.添加servlet的jar包 javax.servlet javax.servlet-api 3.1.0 provided 1. ...

  4. java接口那一节是哪的知识_Java中的接口知识汇总

    Java中的接口知识汇总 发布于 2020-4-29| 复制链接 本文给大家汇总介绍了在java中的接口知识,包括为什么要使用接口.什么是接口.抽象类和接口的区别.如何定义接口以及定义接口注意点,希望 ...

  5. java如何获取tree_如何从javac插件获取memberselecttree中的表达式类型?

    我试图用jsr 269格式编写一个注释处理器,它使用javac的编译器树api来做一些源代码分析.我对成员选择表达式感兴趣,比如方法调用. 我可以很容易地得到所选方法(或字段等)的名称.但我想知道成员 ...

  6. mysql的枚举型数据库_mysql数据类型中的枚举型_mysql_mysql教程_mysql数据库_课课家...

    在MySQL当中,枚举类型ENUM是一个字符串对象,它的值是在表创建的时侯在列规定中显式枚举的一列值.而在某些情况下,ENUM值也可以为空字符串('')或者是NULL.今天小编就通过这篇文章介绍enu ...

  7. php识别下载图片类型,php识别jpg图片exif信息中Photoshop格式 类型

    最近开发一套绣标生产管理系统,遇到一个问题就是如果用户上传的图片是除了基线("标准")外的格式,印刷机会认不出来.所以需要在上传时进行检测. 网上没有找到现成的方案,前后尝试了三种 ...

  8. c语言汉字属于什么类型_空气悬浮风机在风机中属于什么类型?

    鼓风机是以气体为介质,能将机械能传递给气体,提高气体的压力并抽吸或压送气体的机械称为风机. 空气悬浮鼓风机属于类型什么类型?可以按风机出口气体压力分类和按工作原理分类. 1. 按风机出口气体压力分类( ...

  9. java 接口 this参数_Java BiFunction 接口实例

    原标题:Java BiFunction 接口实例 www.baeldung.com/java-bifunction-interface 1. 简介 Java8 引入了函数式编程,可以把函数作为参数传入 ...

最新文章

  1. MFC下列表控件的使用
  2. java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...
  3. 【机器学习】脑机接口利器:错误率仅3%
  4. 《Node.js实战(双色)》作者之一——吴中骅访谈录
  5. v$session,v$session_wait,v$session_wait_history,v$active_session_history
  6. CMYK、RGB颜色对照表
  7. Android 13 Beta 版发布,诸多亮点不容错过
  8. 机器学习:XGBoost+LightGBM+catboost+5折+stacking的用法
  9. 基于JavaEE的智能化网吧服务系统的设计与实现毕业设计论文
  10. 在运行里输入打开WIN工具。
  11. BDB的Btree结构以及影响Btree性能的各种配置和方法
  12. Linux下配置Samba服务器使用SMBv1或SMBv2协议
  13. 电脑直连开发板 (备忘)
  14. 无线网卡设置为监听模式 airodump破解wifi
  15. 计算机体系结构的庖丁解牛
  16. odoo openerp 分享-oe嵌入qweb】用js读取数据库数据,用类似html语言重写web报表
  17. 用ChatGPT讲一个关于猴子的故事
  18. prism 搭建prism项目
  19. 浅谈物联网安全威胁与挑战
  20. JavaScript递归函数实现斐波那契数列、黄金分割数列,递归定义与用法实例分析,

热门文章

  1. centos7下安装mysql5.6_CentOS7安装后MySQL5.6如何配置MySQL5.6呢?
  2. python 参数解析器_Python中最好用的命令行参数解析工具
  3. springboot搞定全局自定义异常
  4. CentOS7下RabbitMq安装和开机自启动配置
  5. list的交集,差集,并集
  6. CentOS7.X中使用yum安装nginx的方法
  7. 1月29日云栖精选夜读 | 拿下两个世界第一,阿里人机对话模型成人工智能国际通用标准...
  8. MVC+LINQToSQL的Repository模式之(二)数据基类
  9. vmware:Cannot open the disk 'XXX' or one of the snapshot disks it depends on.
  10. canvas一些属性