在添加带有电子邮件及其关联公司ID的联系人时,我遇到以下错误:
2018-06-24 23:03:04.743 WARN 11360 --- [nio-8080-exec-8] .wsmsDefaultHandlerExceptionResolver:无法读取HTTP消息:org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法构造org.vi.entities.Company的实例(尽管至少存在一个Creator):没有用于从字符串值('4')反序列化的字符串参数构造函数/工厂方法;嵌套异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造org.vi.entities.Company的实例(尽管存在至少一个Creator):没有用于从字符串值反序列化的String-argument构造函数/工厂方法(“ 4”)
在[来源:(PushbackInputStream);行:1,列:138](通过参考链:org.vi.entities.Contact [“ company”])
我认为option的值发送的是String而不是Long,我该如何解决这个问题?
model.contact.ts
从“ ./model.company”导入{Company};
出口舱联系人{
电子邮件:字符串;
电话:字符串;
firstName:string;
lastName:string;
工作:字符串;
生日:日期;
公司:公司
}
model.company.ts
出口舱公司{
身份证号码;
名称:字符串;
活动:字符串;
地址:字符串;
城市:字符串;
logo:字符串;
}
2 个答案:
答案 0 :(得分:1)
option
的属性value
始终是字符串。尝试改用[ngValue]
。
<option *ngFor="let comp of companies" [ngValue]="comp.id">{{comp.name}}</option>
option
元素被angular
的{{3}}覆盖,该元素具有ngValue
输入。 ngValue
可以是任何类型:布尔值,对象,整数,字符串等...
答案 1 :(得分:0)
首先感谢您@Andriy的回应,Contact期望整个Company对象,所以解决方案是:[ngValue]="comp"
<div class="form-group row">
<label for="company" class="col-md-2 col-form-label">Company</label>
<div class="col-md-10">
<select class="form-control" id="company" name="company" [(ngModel)]="contact.company">
<option *ngFor="let comp of companies" [ngValue]="comp" >{{comp.name}}</option>
</select>
</div>
</div>