我有RestController端点:
Mono<A> editA(@PathVariable String id, @Valid A a)
A类看起来像这样:
class A {
private MultipartFile imageToSave;
private String name;
private String otherString;
private ArrayList<B> bList;
}
B类看起来类似于A类(但仅包含String fiels)。
前端客户端(使用Axios进行响应)发送表单值(两个字符串,图像文件)。我使用javascript FormData对象将此值发送到一个请求中,并且工作正常。
但是我也想发送一个列表B对象。因此,我尝试仅将列表B对象添加到FormData并将其发送。
我如何使用FormData发送带有对象的列表并将它们映射到ArrayList?
已解决的[org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:1个错误 字段“ bList”上的对象“ a”中的字段错误:拒绝的值 [[object Object]];码 [typeMismatch.a.bList,typeMismatch.bList,typeMismatch.java.util.ArrayList,typeMismatch]; 论点 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码[a.bList,bList];参数[];预设讯息 [bList]];默认消息[无法转换类型的属性值 将'java.lang.String'更改为属性的必需类型'java.util.ArrayList' 'bList';嵌套的异常是java.lang.IllegalStateException: 无法将类型“ java.lang.String”的值转换为必需的类型 属性“ bList”的“ java.util.ArrayList”:没有匹配的编辑器或 找到转换策略]]
答案 0 :(得分:0)
在Laravel中使用formData传递错误时,我遇到了类似的错误。原来,您不能将formData API与数组一起使用。 看看以下网址: https://developer.mozilla.org/en-US/docs/Web/API/FormData/append 它仅接受字符串或blob。 对于您的解决方案,您将必须像我所做的那样。
IllegalArgumentException
在这里,我要做的基本上是从表单输入属性中构建对象,然后使用通过axios传递的以下代码。
let formData = {};
for (var property in this.form) {
if (this.form.hasOwnProperty(property)) {
// formData.append(property,this.form[property]);
formData[property] = this.form[property];
}
}