如何使用接口对象List自动增长Spring @ModelAttribute命令类

时间:2017-05-14 21:15:25

标签: java spring spring-mvc

我正在尝试绑定一个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,但它永远不会被调用。

0 个答案:

没有答案