You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React使用Axios发起put请求更新customer数据异常问题求助

问题定位与修复方案

1. lastName字段传值为null问题

原因:前端请求体键名拼写错误,代码中写为LastName: lastName(首字母大写),和后端CustomerDto类定义的小驼峰lastName字段名不匹配,JSON反序列化时无法对应赋值,因此该字段为null。
修复:将axios.put请求体中的对应键名改为小驼峰:

{
  firstName: firstName,
  lastName: lastName, // 将大写开头的LastName改为小写开头的lastName
  email: email,
  password: password
}

2. 接口新增数据而非更新问题

原因:Service层逻辑遗漏主键赋值,你虽然通过路径参数id判断了目标用户存在,但是customerMapper.toDao(customerDto)转换得到的customerDao对象没有携带主键值,JPA的saveAndFlush()方法检测到实体主键为空时,会默认执行新增操作而非更新操作。
修复:在调用saveAndFlush之前,给转换后的实体设置主键:

if (!custRepo.existsById(id))
    throw new DoesNotExistException("Customer does not exist");
customerDao.setId(id); // 新增该行,给实体赋值目标主键
custRepo.saveAndFlush(customerDao);

额外优化建议

你当前代码中useEffect为空依赖,页面加载完成后会自动调用一次formData(),此时所有输入字段均为空值,会触发一次无效的更新请求,建议删除该useEffect逻辑,或补充正确的依赖项避免误触发请求。


内容的提问来源于stack exchange,提问作者Fastaca Girasol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:06:03