POST请求批量提交JSON数组对象时Getter方法报错,如何解决?
问题解决:批量添加对象时Getter方法报错的处理
错误原因
你遇到的"Cannot resolve method 'myGetter' in 'List'"错误,本质是两个问题:
- 直接在List集合上调用了InvoiceDTO的Getter方法:List是集合容器,本身没有InvoiceDTO的属性Getter,必须遍历集合中的每个InvoiceDTO实例再调用对应方法。
- InvoiceDTO类缺少Getter方法:你只给DTO加了
@NoArgsConstructor,Lombok不会自动生成字段的Getter,即使遍历到单个对象,也无法调用Getter。
解决方案
1. 给InvoiceDTO补充Getter方法
通过Lombok的@Getter注解(或@Data注解,包含Getter、Setter、toString等更多功能),自动生成所有字段的Getter方法。同时修正你代码中accountNumber字段的注解错误:
@NoArgsConstructor @Getter // 添加该注解生成所有字段的Getter public class InvoiceDTO { @NotNull(message = "PersonId can't be null") @PersonId private String personId; @NotNull(message = "invoiceDate can't be null") @PastOrPresent @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate invoiceDate; @NotNull(message = "invoiceNumber can't be null") private String invoiceNumber; @NotNull(message = "phone number can't be null") private Long phoneNumber; @NotNull(message = "invoiceAmount can't be null") private Double invoiceAmount; @NotNull(message = "accountNumber can't be null") // 修正原错误的message内容 private String accountNumber; private int msdin; }
2. 正确遍历List集合调用Getter
在处理批量请求的方法中,遍历List<InvoiceDTO>中的每个对象,再调用对应的Getter方法,示例代码如下:
@PostMapping("/invoices/batch") public ResponseEntity<Void> batchAddInvoices(@RequestBody List<InvoiceDTO> invoiceList) { // 遍历集合中的每个InvoiceDTO实例 for (InvoiceDTO invoice : invoiceList) { // 对单个对象调用Getter String personId = invoice.getPersonId(); LocalDate invoiceDate = invoice.getInvoiceDate(); String invoiceNumber = invoice.getInvoiceNumber(); // 后续业务逻辑处理... } return ResponseEntity.ok().build(); }
内容的提问来源于stack exchange,提问作者DarkBot
相关产品推荐
相关产品推荐

