java - Spring MVC 绑定(bind)嵌套对象

标签 java spring inner-classes spring-form

我有一个以下类的实例,我想从中编辑它,然后将其保存回后端。

public class NestedClass {
    List<InnerClass> inners = new LinkedList<InnerClass>();

    //getter and setter

    public class InnerClass {
        private String innerField;

        //getter and setter
   }
}

编辑:编辑示例代码以满足@Slava Semushin 的建议。

当我实例化类并将其传递给模型时,我可以使用以下 jsp 片段读取值:

<form:input path="inners[0].innerField" /><br/>
<form:input path="inners[1].innerField" /><br/>

但是当我把它传回去时,我得到以下异常:

Invalid property 'inners[0]' of bean class [com.sodacrm.webapp.forms.NestedClass]: Illegal attempt to get property 'inners' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'inners' of bean class [com.sodacrm.webapp.forms.NestedClass]: Could not instantiate property type [com.sodacrm.webapp.forms.NestedClass$InnerClass] to auto-grow nested property path: java.lang.InstantiationException: com.sodacrm.webapp.forms.NestedClass$InnerClass
org.springframework.beans.InvalidPropertyException: Invalid property 'inners[0]' of bean class [com.sodacrm.webapp.forms.NestedClass]: Illegal attempt to get property 'inners' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'inners' of bean class [com.sodacrm.webapp.forms.NestedClass]: Could not instantiate property type [com.sodacrm.webapp.forms.NestedClass$InnerClass] to auto-grow nested property path: java.lang.InstantiationException: com.sodacrm.webapp.forms.NestedClass$InnerClass

我正在使用的真实类是 3 层深,我不想将内部类放在单独的文件中,因为它们强烈属于它们的外部类...

最佳答案

如何为 inners 成员定义 getter?检查它是否始终返回有效列表:

List<InnerClass> inners = new LinkedList<InnerClass>();

public List<InnerClass> getInners() {
    if (inners == null) {
        inners = new LinkedList<InnerClass>();
    }
    return inners;
}

关于java - Spring MVC 绑定(bind)嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22714340/

相关文章:

java - 使用 springboot 创建具有 null 属性的对象的 Json 到 POJO

Springfox swagger-ui.html 无法推断基本 URL - 由缺少 cookie 引起

java - Spring 系列不工作

java - 如何使用 JmDNS 解析 Bonjour 域名

java - 整数枚举和拆箱

java - 我需要做哪些设置才能在 Spring 中使用 JSR-303 注释?

java - 是否可以使用在其父类(这是内部类)中实现的类?

c++ - 在 C++ 中转发声明其他嵌套结构

java - 为什么我不能在方法本地内部类中使用访问说明符?

java - 从生成的 pom 和源构建 Artifact