马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
前言
前端与后端在进行交互时,前端传的对象中,有的属性是int,boolean这些类型,它们是有默认值的,当前端不转它们时,后端也会接收到默认值,如int为0,boolean为false,这就给后端代码带来不确定性;比如要有个put更新用户的方法,有个用户对象如下- @Data
- public class UserAccountResponse implements Serializable {
- private String id;
- private String name;
- private boolean isDefault;
- }
复制代码 当前端只put更新name时,如果不传isDefault,后端接收到的是isDefault=0,这是不对的,会出现数据被覆盖的问题;基于这个问题我们需要将boolean改成封装类型Boolean,当前端不传时,它是为null的;而在lombok中,boolean和Boolean类型天生的 getter和setter方法名是不同的,这导致了返回前端的属性名不同。
lombok中boolean和Boolean
对于上面的例子,在isDefault被返回前端时,它的名称分别是
- boolean 返回到前端为 default
- Boolean 返回到前端为 isDefault
为Boolean类型属性进行适配
使用 @Setter(AccessLevel.NONE)和@Getter(AccessLevel.NONE) 并手动实现 getter 和 setter- @Data
- public class UserAccountResponse implements Serializable {
- private String id;
- private String name;
- @Setter(AccessLevel.NONE)
- @Getter(AccessLevel.NONE)
- private boolean isDefault;
- public Boolean getDefault() {
- return isDefault; // 自定义 getter 方法
- }
- public void setDefault(Boolean isDefault) {
- this.isDefault = isDefault;
- }
- }
复制代码 这样再返回前端时,就是只有一个default字段了,不是与之前boolean产生冲突,固然,如果之前你使用的一直是Boolean就不会有这个问题,本文章只使用于类型从boolean修改为Boolean的环境- {
- "code": "200",
- "data": [
- {
- "id": "57345f65bb064a9a95327e35a5034905",
- "default": true,
- "name": "normal"
- }
- ]
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |