【发布时间】:2021-08-31 07:39:43
【问题描述】:
我想为 REST api 实现 UPDATE(方法 PUT)操作。在前端应用程序中,我的控制器方法需要值映射,例如:
@PutMapping(value = "/profile")
public UserDto updateProfile(JwtAuthenticationToken jwtAuthenticationToken, @RequestBody Map<String, ?> userForm) {
...
}
我想使用 map 作为请求正文而不是 POJO,因为在 opf map 的帮助下,我可以为每个属性声明 3 个状态:
- 地图中没有属性 - 属性未更改,请勿更新 bean 属性
- 属性存在且不为空 - 使用值更新 bean 属性
- 属性存在且为 null - 使用 null 更新 bean 属性
使用 POJO,我无法处理上面列表中的 #1 - 该属性始终存在 null 或非 null 值
在我的服务方法中,我必须根据上述 3 条规则将地图中的属性与我的 User 对象合并。
当然,我可以在我的自定义代码中使用反射 api 执行此操作,但要寻找一些可以帮助我完成此任务的现有实用程序......某种
user = BeanUtils.merge(userForm, user);
如果有请告知。
【问题讨论】:
标签: java spring-boot rest merge apache-commons-beanutils