前端传入数字,后端用枚举接收统一处理
举例:
有性别枚举:
public enum GenderEnum implements BaseCodeEnum {male(1,"男"),female(2,"女");Integer code ;String value;GenderEnum(Integer code , String value){this.code = code;this.value = value;}@Overridepublic Integer getCode() {return code;}}
后端接收controller和POJO类:
@PostMapping("/body")public TestEnumForm test2(@RequestBody TestEnumForm testEnumForm){return testEnumForm;}@Data
public class TestEnumForm {GenderEnum gender;
}
前端入参:
实际效果如图:
实现方式
@Slf4j
@Component
public class JacksonEnumCustomizer implements Jackson2ObjectMapperBuilderCustomizer {@Overridepublic void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {jacksonObjectMapperBuilder.serializerByType(BaseCodeEnum.class, new JsonSerializer<BaseCodeEnum>() {@Overridepublic void serialize(BaseCodeEnum value, JsonGenerator gen, SerializerProvider serializers) throws IOException {gen.writeNumber(value.getCode());}});jacksonObjectMapperBuilder.deserializerByType(Enum.class, new JacksonEnumDeserializer());}
}
@Slf4j
public class JacksonEnumDeserializer extends JsonDeserializer<Enum> {@Overridepublic Enum deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {Object currentValue = jsonParser.getCurrentValue();Class<?> targetClass = currentValue.getClass();String value = jsonParser.getText();String fieldName = jsonParser.getCurrentName();return getEnum(targetClass, value, fieldName);}public Enum getEnum(Class<?> targetClass, String value, String fieldName) {Class<?> propertyClass = ReflectionUtils.findField(targetClass, fieldName).getType();Object[] enumConstants = propertyClass.getEnumConstants();for (Object enumConstant : enumConstants) {if (ClassUtils.isAssignable(BaseCodeEnum.class, propertyClass)) {BaseCodeEnum baseCodeEnum = (BaseCodeEnum) enumConstant;if (baseCodeEnum.getCode().equals(Integer.valueOf(value))) {return (Enum) enumConstant;}} else {if (((Enum) enumConstant).name().equals(value)) {return (Enum) enumConstant;}}}throw new RuntimeException("covert enum error");}
}
如果上述方式启动后不生效的话,看下面的解决方式:
https://blog.csdn.net/sj1231984/article/details/117673198
前端传入数字,后端用枚举接收统一处理相关推荐
- 材料狗转行IC设计,数字前端,数字后端Or 数字验证哪个更好?
其实,目前大多数IC转行者.包括应届生等都有类似问题,作为天坑材料专业的本身也很无奈. 而题主问的也主要有4个方面: 1.材料转ic设计可行吗? 2.前端.后端.验证哪个更好? 3.从事模拟版图多年能 ...
- js输出php文件大小,前端js实现文件的断点续传 后端PHP文件接收
早就听说过断点续传这种东西,前端也可以实现一下. 断点续传在前端的实现主要依赖着HTML5的新特性,所以一般来说在老旧浏览器上支持度是不高的 本文通过断点续传的简单例子(前端文件提交+后端PHP文件接 ...
- ajax前端传数组后端接收,前端AJAX传递数组给Springmvc接收处理
前端传递数组后端(Spring)来接收并处理: 测试页面 function ccc() { var btn = document.getElementById("btn"); $. ...
- VO的实际应用;后端接收前端传入的值;实体类转化VO;PO,VO,DTO,BO,DAO,POJO区别
文章目录 各层转换流程 分层领域模型规约: 领域模型命名规约: 后端向前端传参 封装 前端向后台传参 封装 快速转换解决方案 参考 各层转换流程 分层领域模型规约: DO( Data Object): ...
- layui 传递前端请求_Layui数据表格 前后端json数据接收的方法
先上效果图: 前端数据表格: 编号菜单名称菜单路径菜单图标菜单子菜单操作 编辑 删除 js代码 $(function () { //注意:这里是数据表格的加载数据,必须写 layui.use(['ta ...
- 前端传来的参数后端无法正确接收
问题: 今天和前端进行接口联调,前端传来的参数如下: trSpeBadWeatherAttention: {linkId: "S32", badWeatherType: " ...
- 数字IC设计的前端设计和后端设计流程
数字IC设计的前端设计和后端设计流程 数字IC前端设计流程 数字IC后端设计流程 数字IC前端设计流程 数字IC就是传递.加工.处理数字信号的集成电路(Integrated Circuit, IC), ...
- 使用@RequestBody 接收前端传到后端的json数据时,页面出现415,获取不到Cookie
文章目录 1.使用@RequestBody 接收前端传到后端的json数据时,页面出现415 2.获取Cookie时,使用F12,查看Cookie储存时的路径,只有路径一致才可以获取Cookie 3. ...
- SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据
文章目录 SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据 枚举的好处 枚举使用场景 枚举在项目中的使用 第一种形式 第二种形式 实体类的枚举字段保存到数据库,并且返回时自动 ...
- java将前端传给后端的文字写入到word中
java将前端传给后端的文字写入到word中 用户个人记录使用 前端代码 <!DOCTYPE html> <html lang="en"><head& ...
最新文章
- Could not open Hibernate Session for transaction;
- 手动创建Github pull request
- 看《Linux入门讲座》随记
- WsusAgent检测脚本
- 目录:关于【稳定性建设之道】大纲速览
- Mysql替换字段中的内容
- 小程序开发之图片转Base64(C#、.Net)
- 惠普服务器G8系列做raid,hp g8服务器设置raid5
- Getting started with Processing 第七章总结
- python制作圆形按钮_圆形按钮tkinter python
- Shadow DOM的样式ShadowRoot
- Golang 字符串
- 用python计算圆周率Π
- 115://开头的链接怎么转磁力?
- 个嵌入式牛人学习经历
- 选择美国虚拟主机时要考虑的事项
- 美多商场之图形验证码
- 逆天而行-我们如何在云中发掘僵尸网络
- Servlet数据传输Jason核心知识
- 阿里服务器教程大全-服务器、建站、备案、网站配置
热门文章
- python2代码转换为python3
- 【peoplesoft】Integration Gateway - General Error (158,10201)错误
- 基于字典爆破的子域名脚本
- Android实现Twitter登录分享
- python实验报告代写_vector data作业代写、python程序设计作业调试、代做python实验作业、代写OGR python作业代做Python程序|代写Web开发...
- lol刷金币python脚本_用Python写王者荣耀刷金币脚本
- 完全java实现一款开源的报表工具简表(JOR)
- 原生js放大镜 原理 一看就懂 非常简单
- 无向图的极大团、最大团(Bron-Kerbosch算法)
- 怎样找计算机物理地址,怎么查询电脑物理地址