AngularJS接收Java后端HTTP GET请求返回数组内容异常问题排查
问题分析与解决方案
嘿,我一眼就揪出问题根源了——你的Item类里,那些从数据库查询出来并赋值的核心属性(比如idUnit、productCode、brand这些)没有对应的公共getter方法!
你用的JAX-RS框架(比如Jersey)在把Java对象转成JSON返回给前端时,默认是通过公共getter方法来识别要序列化的属性的。现在你的Item类里只有chassis、engine这类属性有getter,而你真正需要的那些属性根本没对外暴露获取方式,所以序列化后的JSON里完全没有这些字段,前端拿到的自然是不符合预期的内容。
具体解决步骤
1. 给核心属性添加getter方法
给idUnit、productCode、brand、availableItems、requiredItems、orderedItems、note、option这些属性逐一添加公共getter,示例如下:
public int getIdUnit() { return idUnit; } public int getProductCode() { return productCode; } public String getBrand() { return brand; } public int getAvailableItems() { return availableItems; } public int getRequiredItems() { return requiredItems; } public int getOrderedItems() { return orderedItems; } public String getNote() { return note; } public String getOption() { return option; }
2. 测试验证
添加完这些getter后,重启后端服务,再发起GET请求,你会看到前端控制台打印的数组内容和Java调试器里的一致了。
额外小建议
- 要是嫌写getter太麻烦,可以试试Lombok的
@Getter注解,它能自动给所有属性生成getter,减少样板代码。 - 另外,你的
Item有多个构造方法,虽然当前逻辑没影响,但可以确认下序列化框架(比如Jackson)能正确识别你在用的构造方法,不过先解决getter的问题就够了。
内容的提问来源于stack exchange,提问作者alesechi
相关产品推荐
相关产品推荐

