属性名的第二个字母大写,lombok生成的setter无法接收参数

问题描述

项目使用了滑块验证,登录接口需要前端传用户滑动的横向位移,定义成“xMoved”,但是测试时,这个字段总是接不到值
在这里插入图片描述

在这里插入图片描述

原因分析:

@Data
public class LoginRequestDto {
    @NotBlank(message = "账号不能为空")
    private String username;
    @NotBlank(message = "密码不能为空")
    private String password;
    @NotBlank(message = "校验ID不能为空")
    private String verifyId;
    @Min(value = 0, message = "移动像素不能小于0")
    @Max(value = 500, message = "移动像素不能大于500")
    private int xMoved;
    @NotBlank(message = "应用编码不能为空")
    private String systemCode;

    private boolean remember = Boolean.FALSE;
}

尝试将xMoved的类型改成包装类型Integer,去掉校验,都不行。
最后试着将“xMoved”改成“moved”,立马就好使了

怀疑是未编译好,重新换成“xMoved”,查看编译的class。

public class LoginRequestDto {
    private @NotBlank(
    message = "账号不能为空"
) String username;
    private @NotBlank(
    message = "密码不能为空"
) String password;
    private @NotBlank(
    message = "校验ID不能为空"
) String verifyId;
    private @Min(
    value = 0L,
    message = "移动像素不能小于0"
) @Max(
    value = 500L,
    message = "移动像素不能大于500"
) int xMoved;
    private @NotBlank(
    message = "应用编码不能为空"
) String systemCode;
    private boolean remember;

    public LoginRequestDto() {
        this.remember = Boolean.FALSE;
    }

    ...

    public int getXMoved() {
        return this.xMoved;
    }

    ...

    public void setXMoved(int xMoved) {
        this.xMoved = xMoved;
    }
	...

感觉set没啥问题,首字母大写了,setXMoved()
但是还是不行≡(▔﹏▔)≡

解决方案:

最终是将“xMoved”改成了“moved”,处理的。
后发现此博客JavaBean getter/setter命名规范[特例],终于知道了原因

1、如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。
2、如果属性名的前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。
3、如果属性名的首字母大写,也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。
4、如果属性名以"is"开头,则getter方法会省掉get,set方法会去掉is。例如属性名为isOK,方法是isOK/setOK。

这是JavaBean的getter/setter特例。而lombok未处理第二个字母大写的场景,依旧按照普通字段生成set方法,导致出现这个问题。

在这里插入图片描述
在这里插入图片描述
使用idea自带的生成set方法,确实验证了此问题,“xMoved”生成的是setxMoved

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿狸尬多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值