举例:

有性别枚举:

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

前端传入数字,后端用枚举接收统一处理相关推荐

  1. 材料狗转行IC设计,数字前端,数字后端Or 数字验证哪个更好?

    其实,目前大多数IC转行者.包括应届生等都有类似问题,作为天坑材料专业的本身也很无奈. 而题主问的也主要有4个方面: 1.材料转ic设计可行吗? 2.前端.后端.验证哪个更好? 3.从事模拟版图多年能 ...

  2. js输出php文件大小,前端js实现文件的断点续传 后端PHP文件接收

    早就听说过断点续传这种东西,前端也可以实现一下. 断点续传在前端的实现主要依赖着HTML5的新特性,所以一般来说在老旧浏览器上支持度是不高的 本文通过断点续传的简单例子(前端文件提交+后端PHP文件接 ...

  3. ajax前端传数组后端接收,前端AJAX传递数组给Springmvc接收处理

    前端传递数组后端(Spring)来接收并处理: 测试页面 function ccc() { var btn = document.getElementById("btn"); $. ...

  4. VO的实际应用;后端接收前端传入的值;实体类转化VO;PO,VO,DTO,BO,DAO,POJO区别

    文章目录 各层转换流程 分层领域模型规约: 领域模型命名规约: 后端向前端传参 封装 前端向后台传参 封装 快速转换解决方案 参考 各层转换流程 分层领域模型规约: DO( Data Object): ...

  5. layui 传递前端请求_Layui数据表格 前后端json数据接收的方法

    先上效果图: 前端数据表格: 编号菜单名称菜单路径菜单图标菜单子菜单操作 编辑 删除 js代码 $(function () { //注意:这里是数据表格的加载数据,必须写 layui.use(['ta ...

  6. 前端传来的参数后端无法正确接收

    问题: 今天和前端进行接口联调,前端传来的参数如下: trSpeBadWeatherAttention: {linkId: "S32", badWeatherType: " ...

  7. 数字IC设计的前端设计和后端设计流程

    数字IC设计的前端设计和后端设计流程 数字IC前端设计流程 数字IC后端设计流程 数字IC前端设计流程 数字IC就是传递.加工.处理数字信号的集成电路(Integrated Circuit, IC), ...

  8. 使用@RequestBody 接收前端传到后端的json数据时,页面出现415,获取不到Cookie

    文章目录 1.使用@RequestBody 接收前端传到后端的json数据时,页面出现415 2.获取Cookie时,使用F12,查看Cookie储存时的路径,只有路径一致才可以获取Cookie 3. ...

  9. SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据

    文章目录 SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据 枚举的好处 枚举使用场景 枚举在项目中的使用 第一种形式 第二种形式 实体类的枚举字段保存到数据库,并且返回时自动 ...

  10. java将前端传给后端的文字写入到word中

    java将前端传给后端的文字写入到word中 用户个人记录使用 前端代码 <!DOCTYPE html> <html lang="en"><head& ...

最新文章

  1. Could not open Hibernate Session for transaction;
  2. 手动创建Github pull request
  3. 看《Linux入门讲座》随记
  4. WsusAgent检测脚本
  5. 目录:关于【稳定性建设之道】大纲速览
  6. Mysql替换字段中的内容
  7. 小程序开发之图片转Base64(C#、.Net)
  8. 惠普服务器G8系列做raid,hp g8服务器设置raid5
  9. Getting started with Processing 第七章总结
  10. python制作圆形按钮_圆形按钮tkinter python
  11. Shadow DOM的样式ShadowRoot
  12. Golang 字符串
  13. 用python计算圆周率Π
  14. 115://开头的链接怎么转磁力?
  15. 个嵌入式牛人学习经历
  16. 选择美国虚拟主机时要考虑的事项
  17. 美多商场之图形验证码
  18. 逆天而行-我们如何在云中发掘僵尸网络
  19. Servlet数据传输Jason核心知识
  20. 阿里服务器教程大全-服务器、建站、备案、网站配置

热门文章

  1. python2代码转换为python3
  2. 【peoplesoft】Integration Gateway - General Error (158,10201)错误
  3. 基于字典爆破的子域名脚本
  4. Android实现Twitter登录分享
  5. python实验报告代写_vector data作业代写、python程序设计作业调试、代做python实验作业、代写OGR python作业代做Python程序|代写Web开发...
  6. lol刷金币python脚本_用Python写王者荣耀刷金币脚本
  7. 完全java实现一款开源的报表工具简表(JOR)
  8. 原生js放大镜 原理 一看就懂 非常简单
  9. 无向图的极大团、最大团(Bron-Kerbosch算法)
  10. 怎样找计算机物理地址,怎么查询电脑物理地址