java接口参数类型为枚举_Spring MVC处理参数中的枚举类型通用实现方法
前言
在开发的过程中,会涉及到大量的枚举类型数据,我们都知道,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处理参数中的枚举类型通用实现方法相关推荐
- c语言 函数不一定要指定类型,简答的理解C语言中的各种类型函数
1.变参函数 变长参数的函数即参数个数可变.参数类型不定 的函数.最常见的例子是printf函数.scanf函数和高级语言的Format函数.在C/C++中,为了通知编译器函数的参数个数和类型可变(即 ...
- c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
pycharm能干嘛_后端开发 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示 ...
- java调用视图如何传参_Spring MVC中 视图 向 控制器 传参(接收方式)
1.方法一(通过HttpServletRequest方式接收) 1.1.添加servlet的jar包 javax.servlet javax.servlet-api 3.1.0 provided 1. ...
- java接口那一节是哪的知识_Java中的接口知识汇总
Java中的接口知识汇总 发布于 2020-4-29| 复制链接 本文给大家汇总介绍了在java中的接口知识,包括为什么要使用接口.什么是接口.抽象类和接口的区别.如何定义接口以及定义接口注意点,希望 ...
- java如何获取tree_如何从javac插件获取memberselecttree中的表达式类型?
我试图用jsr 269格式编写一个注释处理器,它使用javac的编译器树api来做一些源代码分析.我对成员选择表达式感兴趣,比如方法调用. 我可以很容易地得到所选方法(或字段等)的名称.但我想知道成员 ...
- mysql的枚举型数据库_mysql数据类型中的枚举型_mysql_mysql教程_mysql数据库_课课家...
在MySQL当中,枚举类型ENUM是一个字符串对象,它的值是在表创建的时侯在列规定中显式枚举的一列值.而在某些情况下,ENUM值也可以为空字符串('')或者是NULL.今天小编就通过这篇文章介绍enu ...
- php识别下载图片类型,php识别jpg图片exif信息中Photoshop格式 类型
最近开发一套绣标生产管理系统,遇到一个问题就是如果用户上传的图片是除了基线("标准")外的格式,印刷机会认不出来.所以需要在上传时进行检测. 网上没有找到现成的方案,前后尝试了三种 ...
- c语言汉字属于什么类型_空气悬浮风机在风机中属于什么类型?
鼓风机是以气体为介质,能将机械能传递给气体,提高气体的压力并抽吸或压送气体的机械称为风机. 空气悬浮鼓风机属于类型什么类型?可以按风机出口气体压力分类和按工作原理分类. 1. 按风机出口气体压力分类( ...
- java 接口 this参数_Java BiFunction 接口实例
原标题:Java BiFunction 接口实例 www.baeldung.com/java-bifunction-interface 1. 简介 Java8 引入了函数式编程,可以把函数作为参数传入 ...
最新文章
- MFC下列表控件的使用
- java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...
- 【机器学习】脑机接口利器:错误率仅3%
- 《Node.js实战(双色)》作者之一——吴中骅访谈录
- v$session,v$session_wait,v$session_wait_history,v$active_session_history
- CMYK、RGB颜色对照表
- Android 13 Beta 版发布,诸多亮点不容错过
- 机器学习:XGBoost+LightGBM+catboost+5折+stacking的用法
- 基于JavaEE的智能化网吧服务系统的设计与实现毕业设计论文
- 在运行里输入打开WIN工具。
- BDB的Btree结构以及影响Btree性能的各种配置和方法
- Linux下配置Samba服务器使用SMBv1或SMBv2协议
- 电脑直连开发板 (备忘)
- 无线网卡设置为监听模式 airodump破解wifi
- 计算机体系结构的庖丁解牛
- odoo openerp 分享-oe嵌入qweb】用js读取数据库数据,用类似html语言重写web报表
- 用ChatGPT讲一个关于猴子的故事
- prism 搭建prism项目
- 浅谈物联网安全威胁与挑战
- JavaScript递归函数实现斐波那契数列、黄金分割数列,递归定义与用法实例分析,
热门文章
- centos7下安装mysql5.6_CentOS7安装后MySQL5.6如何配置MySQL5.6呢?
- python 参数解析器_Python中最好用的命令行参数解析工具
- springboot搞定全局自定义异常
- CentOS7下RabbitMq安装和开机自启动配置
- list的交集,差集,并集
- CentOS7.X中使用yum安装nginx的方法
- 1月29日云栖精选夜读 | 拿下两个世界第一,阿里人机对话模型成人工智能国际通用标准...
- MVC+LINQToSQL的Repository模式之(二)数据基类
- vmware:Cannot open the disk 'XXX' or one of the snapshot disks it depends on.
- canvas一些属性