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

Angular向SpringBoot后端传递Purchase对象时Address属性始终为null的问题求助

Angular向SpringBoot后端传递Purchase对象时Address属性始终为null的问题求助

各位大佬好,我现在正在开发一个电商网站,前端用Angular,后端是SpringBoot,数据库用的MySQL。现在遇到一个头疼的问题:用户下单后,我需要把订单详情保存到数据库里,前端会把一个包含customer、address、order、orderItems四个属性的Purchase对象通过POST请求传给后端SpringBoot的Controller,但后端接收到的对象里,address属性总是null,其他三个属性都能正常拿到值。

我已经在Angular里反复确认过,发起请求前purchase对象里的address是有正确数据的——比如调用placeOrder方法前我特意用console.log打印过,address里的街道、城市、邮编这些字段都有合法值,但后端接收后就是null,实在搞不懂哪里出问题了。

先贴一下我Angular这边的CheckoutService代码:

export class CheckoutService {

  private purchaseUrl = "http://localhost:8080/api/checkout/purchase";

  constructor(public httpClient: HttpClient) { }

  placeOrder(purchase: Purchase): Observable<any> {
    return this.httpClient.post<Purchase>(this.purchaseUrl, purchase); 
  }

}

再补充一些关键的定义信息:

  • 前端的Purchase及相关接口:
export interface Purchase {
  customer: Customer;
  address: Address;
  order: Order;
  orderItems: OrderItem[];
}

export interface Address {
  street: string;
  city: string;
  state: string;
  zipCode: string;
}
  • 后端SpringBoot的Purchase实体类:
public class Purchase {
    private Customer customer;
    private Address address;
    private Order order;
    private List<OrderItem> orderItems;

    // 省略所有属性的getter和setter方法
}
  • 后端接收请求的Controller代码:
@RestController
@RequestMapping("/api/checkout")
public class CheckoutController {

    @PostMapping("/purchase")
    public ResponseEntity<String> placeOrder(@RequestBody Purchase purchase) {
        // 这里打印address,结果始终是null
        System.out.println("Received address: " + purchase.getAddress());
        // 后续的订单保存逻辑...
        return new ResponseEntity<>("Order placed successfully", HttpStatus.OK);
    }
}

我还检查了浏览器的网络请求Payload,里面确实包含address的完整数据,比如:

{
  "customer": {
    "firstName": "Sidharth",
    "lastName": "Manikandan"
  },
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "state": "NY",
    "zipCode": "10001"
  },
  "order": {"totalPrice": 99.99},
  "orderItems": [{"productId": 1, "quantity": 2}]
}

我怀疑过是不是属性名大小写不匹配?但两边的属性名都是address,完全一致;也检查过后端实体类的getter/setter是不是写错了,比如写成了getAdress()少了个d?但确认过是正确的getAddress()和setAddress()。

有没有大佬遇到过类似的问题?或者能给我指个排查方向?实在卡在这里动不了了,谢谢大家!

备注:内容来源于stack exchange,提问作者Sidharth Manikandan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:19:53