我正在尝试绑定一个command
类,其中包含List
个实现Spring (Boot 1.4.4.RELEASE)
中接口的对象。
命令类
@Data
@AllArgsConstructor
public class CarInternetContentEditFormCommand implements EditFormCommand {
@Valid
@NotEmpty
@JsonDeserialize(contentAs = CarInternetContentForm.class)
private List<EditForm> editForms;
public CarInternetContentEditFormCommand() {
this.editForms = new ArrayList<>();
}
public EditForm getEditForm() {
if (this.editForms.isEmpty()) {
return new CarInternetContentForm();
}
return this.editForms.get(0);
}
@Override
public void setEditForm(EditForm form) {
if (this.editForms.isEmpty()) {
this.editForms = new ArrayList<>();
}
this.editForms.add(form);
}
}
错误跟踪
org.springframework.beans.NullValueInNestedPathException:bean类的无效属性'editForms'[com.phistory.mvc.cms.command.CarInternetContentEditFormCommand]:无法实例化属性类型[com.phistory.mvc.cms.form.EditForm ]自动增长嵌套属性路径;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[com.phistory.mvc.cms.form.EditForm]:指定的类是一个接口
当视图呈现时,editForms
中的command
列表为空,在我的视图中,我尝试绑定元素编号0,如下所示:
<@spring.formInput "CICEFC.editForms[0].link", "class=form-control", "text"/>
因此,Spring尝试自动增长列表并实例化EditCommand
对象,这显然是一个接口,它不知道如何。
有没有办法告诉Spring如何做到这一点?我已经尝试为命令类注册PropertyEditor
,但它永远不会被调用。