起因:
今天在前端给我传参的时候,死活接收不到
controller层代码如下:
@PostMapping("/big/scene/target/track")
public Result<?> bigSceneTargetTrack(@RequestBody QueryParam queryParam){
return Result.ok(personRecordService.bigSceneTargetTrack(queryParam));
}
QueryParam 代码:
package com.langong.axfservice.safe.domain;
import lombok.*;
import java.util.Date;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class QueryParam {
/**
* 警戒区名字
*/
private String warnAreaName;
/**
* 警戒区id
*/
private String warnAreaId;
/**
* 设备名称
*/
private String deviceName;
/**
* 摄像头唯一标识
*/
private String deviceId;
/**
* 单位
*/
private String units;
/**
* 页数
*/
private Integer current=1;
/**
* 数量
*/
private Integer limit=50;
/**
* 开始时间
*/
private Date startDate;
/**
* 结束时间
*/
private Date endDate;
/**
* 密度阈值
*/
private Integer densityvalue;
/**
* 人员-无口罩
*/
private Integer hWMouthMask;
/**
* 人员-抽烟
*/
private Integer hWSmoking;
/**
* 人员-有怀抱物
*/
private Integer hWFrontEmbrace;
/**
* 人员-性别
*/
private Integer hWGender;
/**
* 人员-年龄
*/
private Integer hWage;
/**
* 人员-体型
*/
private Integer hWBodyType;
/**
* 车辆-无车牌
*/
private Integer hasPlate;
/**
* 车辆-无车牌
*/
private String hasPlateStr;
/**
* 车辆-遮挡车牌
*/
private Integer hWObscurePlate;
/**
* 车辆-主驾驶室没系安全带
*/
private Integer safetyBelt;
/**
* 车辆-天窗站人
*/
private Integer hWHeadOutSunroof;
/**
* 车辆-驾驶员打手机
*/
private Integer hWMainCall;
/**
* 车辆-抽烟
*/
private Integer vHWSmoking;
/**
* 车辆-面部遮挡
*/
private Integer hWFaceShadow;
/**
* 车辆-车辆类型
*/
private String hWVehicleType;
/**
* 单位集合
*/
private List<String> unitsList;
/**
* 隐患类型
*/
private String problemType;
}
乍一看,似乎什么问题也没有,但是问题很大,因为前端给我传递hWMouthMask的时候,一直是null,但是problemType是正常的,能接收到
我百思不得其解,以为是类型的原因,后来转念一想,之前Integer类型也能随便接收啊,然后猜想会不会是Get和Set方法的问题,于是我自己重新生成了Get和Set方法
代码如下:
public Integer gethWMouthMask() {
return hWMouthMask;
}
public void sethWMouthMask(Integer hWMouthMask) {
this.hWMouthMask = hWMouthMask;
}
然后果然好使了,可能细心的小伙伴已经注意到了,这个get和set方法第一个字母居然不是大写,
通过反编译lombok生成的class文件,其生成的get和set方法如下:
public Integer getHWMouthMask() {
return hWMouthMask;
}
public void setHWMouthMask(Integer hWMouthMask) {
this.hWMouthMask = hWMouthMask;
}
所以原因就出在了这里,所以建议小伙伴们写成员变量名字的时候,尽量不要第二个字母就大写