Angular表单提交后Spring Boot中images字段始终为null问题排查
问题:Angular表单提交后Spring Boot无法获取images字段值
在Angular中实现了包含author、context、images字段的提交表单,提交后Spring Boot后端能正常获取author和context的值,但images字段始终返回null。
问题原因
查看Spring Boot端的Content实体类代码,发现images字段对应的getter方法名错误:字段名为images,但getter方法写成了getImage()(缺少末尾的s)。Spring MVC使用@ModelAttribute绑定请求参数时,会通过字段对应的getter/setter方法名匹配请求中的参数名,方法名与字段名不匹配导致无法正确映射赋值。此外,原实体类缺少所有字段的setter方法,这也是参数无法绑定的潜在问题。
解决方案
- 修正
images字段的getter方法名,改为getImages(),与字段名保持一致; - 补充所有字段的setter方法,确保Spring MVC能通过反射为字段赋值。
修正后的Spring Boot代码
实体类Content
public class Content { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String context; private String author; private String images; // Getter方法 public Long getId() { return id; } public String getContext() { return context; } public String getAuthor() { return author; } // 修正getter方法名,与字段名匹配 public String getImages() { return images; } // 补充Setter方法,用于参数绑定 public void setId(Long id) { this.id = id; } public void setContext(String context) { this.context = context; } public void setAuthor(String author) { this.author = author; } public void setImages(String images) { this.images = images; } }
控制器代码(无需修改)
@PostMapping("/create") @ResponseBody public Content saveContent(@ModelAttribute Content content){ System.out.println(content.getImages()); System.out.println(content.getAuthor()); return null; }
Angular代码(无需修改)
submitForm() { const formData = new FormData(); formData.append('author', 'John Smith'); formData.append('images', 'sample.png'); this.http.post<any>('/create', formData).subscribe({ next: (data) => { console.log('Success'); }, error: (err) => { console.log(err); }, }) }
内容的提问来源于stack exchange,提问作者L1N3NM3L0N
相关产品推荐
相关产品推荐

