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

Java 如何使用接口对象列表自动增长Spring@ModelAttribute命令类,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在尝试绑定一个命令类,该类包含对象列表,这些对象在Spring(Boot 1.4.4.RELEASE)中实现接口 命令类 @Data @AllArgsConstructor public class CarInternetContentEditFormCommand implements EditFormCommand { @Valid @NotEmpty @JsonDeserialize(contentAs = CarInternetContentForm.cl

我正在尝试绑定一个
命令
类,该类包含
对象列表
,这些对象在
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);
        }
    }
    
    因此,Spring尝试自动增加列表并实例化
    EditCommand
    对象,这显然是一个接口,它不知道如何实现


    有没有办法告诉Spring如何做到这一点?我已尝试为命令类注册
    属性编辑器
    ,但它从未被调用。

    如果将editForms声明为ArrayList editForms,会发生什么;不管是谁在抱怨,都不喜欢接口,所以你需要传递一个具体的类。是的,我知道,Spring抱怨它不能实例化
    EditForm
    列表,因为它是一个接口,但我有其他
    命令
    类,它们有一个
    EditForm
    对象,通过使用“Jackson”的注释
    @JsonDeserialize(as=ConcreteEditCommand.class)
    它可以实例化它,问题在于集合,我希望有一种方法告诉Spring如何实例化它们
    <@spring.formInput "CICEFC.editForms[0].link", "class=form-control", "text"/>