解决@RequestBody部分属性丢失的问题

目录
  • @RequestBody部分属性丢失
    • 问题描述
      • JavaBean实现
      • Controller实现
      • postman接口请求展示
    • 结论
  • springboot @RequestBody注入属性为空
    • 对象属性为
    • 我的解决办法

@RequestBody部分属性丢失

问题描述

JavaBean实现

public class VerifyNewFriendApplyReq implements Serializable {
    /**
     * 申请ID
     */
    private Long applyId;
    /**
     * 审核结果 true:同意 false:拒绝
     */
    private Boolean isAccept;
    public Long getApplyId() {
        return applyId;
    }
    public void setApplyId(Long applyId) {
        this.applyId = applyId;
    }
    public Boolean getAccept() {
        return isAccept;
    }
    public void setAccept(Boolean accept) {
        isAccept = accept;
    }
}

Controller实现

@RequestMapping(value = "/v0.1/verifyNewFriendApply", method = RequestMethod.POST)
    @ResponseBody
    public ImResponse verifyNewFriendApply(@RequestBody VerifyNewFriendApplyReq reqDto) throws Exception {
        Boolean result = friendApi.verifyNewFriendApply(reqDto);
        return new ImResponse(SystemContext.getSystemProperty().getReqId(), result);
    }

postman接口请求展示

结果发送请求时,在后台只能接收到aplyId字段的值,拿不到isAccept字段的值,检查后我们发现,在IDEA中,对于布尔类型的isXXX变量,在自动生成getter和setter方法时,会去除is标识,如图所示

所以@RequestBody在接收解析时,不会执行getAccept()方法,没有找到匹配的getIsAccept()方法,就会是null。

结论

注意:对于布尔类型的isXXX变量,在自动生成getter和setter方法时,会去除is标识。

springboot @RequestBody注入属性为空

对象属性为

private String rEngIds;

Controller中用@RequestBody注解接收

前端的json属性也是一样的rEngIds

但是死活映射不进

我的解决办法

改属性名:r_engIds完事儿啦~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用注解+RequestBodyAdvice实现http请求内容加解密方式

    注解主要用来指定那些需要加解密的controller方法 实现比较简单 @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface SecretAnnotation { boolean encode() default false; boolean decode() default false; } 使用时添加注解在controller的方法上 @PostMapping("/preview

  • Java SpringBoot在RequestBody中高效的使用枚举参数原理案例详解

    在优雅的使用枚举参数(原理篇)中我们聊过,Spring对于不同的参数形式,会采用不同的处理类处理参数,这种形式,有些类似于策略模式.将针对不同参数形式的处理逻辑,拆分到不同处理类中,减少耦合和各种if-else逻辑.本文就来扒一扒,RequestBody参数中使用枚举参数的原理. 找入口 对 Spring 有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的ha.handle(processedRequest, respons

  • 解决@RequestBody使用不能class类型匹配的问题

    @RequestBody不能class类型匹配 在首次第一次尝试使用@RequestBody注解 开始加载字符串使用post提交(貌似只能post),加Json数据格式传输的时候, data:{"stockCode":"601288","startTime":"2011-11-10 09:05","endTime":"2019-11-20 09:10"}", type: &qu

  • 使用RequestBodyAdvice实现对Http请求非法字符过滤

    RequestBodyAdvice对Http请求非法字符过滤 利用RequestBodyAdvice对HTTP请求参数放入body中的参数进行非法字符过滤. 要求:spring 4.2+ 额外的pom.xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version&

  • 使用@RequestBody传对象参数时碰到的坑

    目录 @RequestBody传对象参数时碰到的坑 我的真实代码是这样的: 也就是下面的区别: @RequestBody 的正确使用 @RequestBody接收的是一个Json对象 @RequestBody的使用 @RequestBody传对象参数时碰到的坑 工作中需要使用到http接口传一个对象数组,网上找到某博客:springmvc参数为对象,数组 但是测试还是不对,报错: 2019-02-21 23:44:37.168 WARN 34133 --- [nio-7001-exec-6] .

  • springmvc 获取@Requestbody转换的异常处理方式

    1.引入问题 使用spring 自动的@RequestBody,可以很方便的将参数转换成对象,然而在自动转换中出现如果出现异常,会默认直接发送HTTP异常代码和错误信息,如何才能自定义自己的异常呢. 2.解决方案 解答问题的方式有可以有很多,一种通用的解答方式是使用@ExceptionHandler 2.1 例如传递的请求体为JSON时 Spring 可以自动封装成一个Map @PostMapping(value = "/check",consumes = "applicat

  • 解决@RequestBody部分属性丢失的问题

    目录 @RequestBody部分属性丢失 问题描述 JavaBean实现 Controller实现 postman接口请求展示 结论 springboot @RequestBody注入属性为空 对象属性为 我的解决办法 @RequestBody部分属性丢失 问题描述 JavaBean实现 public class VerifyNewFriendApplyReq implements Serializable { /** * 申请ID */ private Long applyId; /** *

  • 使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失

    忘记MySQL(和PHP搭配之最佳组合) ROOT密码是在MySQL(和PHP搭配之最佳组合)使用中很常见的问题,可是有很多朋友并不会重置ROOT密码,那叫苦啊,我有深有感触,特写此文章与大家交流: 1.编辑MySQL(和PHP搭配之最佳组合)配置文件: windows环境中:%MySQL(和PHP搭配之最佳组合)_installdir%\my.ini //一般在MySQL(和PHP搭配之最佳组合)安装目录下有my.ini即MySQL(和PHP搭配之最佳组合)的配置文件. linux环境中:/e

  • 基于axios 解决跨域cookie丢失的问题

    设置 axios.defaults.withCredentials = true 即可 示例代码: axios.defaults.withCredentials = true; var param = new URLSearchParams(); param.append("vCode",vcode); axios.post('http://localhost',param) .then(function(res) { var rs=res.data; console.log(rs.d

  • 解决django后台样式丢失,css资源加载失败的问题

    就像这个图的样子: 解决方法,setting.py中DEBUG选项为True,否则无法映射到静态文件目录 以上这篇解决django后台样式丢失,css资源加载失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Vue router传递参数并解决刷新页面参数丢失问题

    Vue Router 传参方式: 1. this.$router.push({ name: '模块名称', params: { // 各参数 } }) router.js: export default new Router({ routes: [ { path: '/paramsPassingByRouter', component: ParamsPassingByRouter, children: [ { path: 'paramsMode', name: 'paramsMode', com

  • 解决BigDecimal转long丢失精度的问题

    我就废话不多说了,大家还是直接看代码吧~ public static void main(String[] args) { BigDecimal asdBigDecimal = new BigDecimal(56.33347); long sad = asdBigDecimal.longValue(); double asda = asdBigDecimal.doubleValue(); System.out.println(sad); System.out.println(asda); } 运

  • Java用BigDecimal类解决Double类型精度丢失的问题

    本篇要点 简单描述浮点数十进制转二进制精度丢失的原因. 介绍几种创建BigDecimal方式的区别. 整理了高精度计算的工具类. 学习了阿里巴巴Java开发手册关于BigDecimal比较相等的规定. 经典问题:浮点数精度丢失 精度丢失的问题是在其他计算机语言中也都会出现,float和double类型的数据在执行二进制浮点运算的时候,并没有提供完全精确的结果.产生误差不在于数的大小,而是因为数的精度. 关于浮点数存储精度丢失的问题,话题过于庞大,感兴趣的同学可以自行搜索一下:[解惑]剖析floa

  • @RequestBody 部分属性没有转化成功的处理

    @RequestBody 部分属性没有转化成功 项目中在编写添加User的API的接口的时候发现 我把User参数设置成了@ResquestBody,但是测试的时候发现即使传入所有属性的数据,但是Controller在接收到的User实例里面只有部分属性被转化了,其他属性均没有转化成功. 后来经查明,发现是@ResquestBody只转化有getter的属性,我把所有有属性都添加getter,然后就可以正确转化了! 另外我发现如果是boolean属性可以添加isXX()的方法也可以 @Reque

  • MyBatis使用resultMap如何解决列名和属性名不一致

    目录 使用resultMap如何解决列名和属性名不一致 OrderMapper.xml配置 单元测试 实体属性名与表字段名不匹配问题 问题 解决方案一 解决方案二 使用resultMap如何解决列名和属性名不一致 resultType可以指定将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中. 需

  • 一文教会你解决js数字精度丢失问题

    目录 一.关于为什么要解决精度丢失 二.怎么解决js的计算精度丢失问题? 三.toPrecision 特定方法返回四舍五入长度字符串 结语 一.关于为什么要解决精度丢失 可以看下例子,因为js失去精度问题也是常见的问题,正常我们可以四舍五入或者 toFixed保留小数这种去解决 现在遇到问题是我们明知道计算结果是等于0.01的但是最后的结果确实true,如果我们遇到运算问题,小数数值比对问题,那么我们就必须要去解决他,否则也就会出现上者情况,出现逻辑判断出错问题 二.怎么解决js的计算精度丢失问

随机推荐