【发布时间】:2014-05-08 00:05:42
【问题描述】:
我有以下类的一个实例,我想在其中编辑它,然后将其保存回后端。
public class NestedClass {
List<InnerClass> inners = new LinkedList<InnerClass>();
//getter and setter
public class InnerClass {
private String innerField;
//getter and setter
}
}
编辑:编辑示例代码以满足@Slava Semushin 的建议。
当我实例化类并将其传递给模型时,我可以使用以下 jsp sn-p 读取值:
<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 级深,我不想将内部类放在单独的文件中,因为它们强烈属于它们的外部类...
【问题讨论】:
-
任何原因
InnerClass未定义为static? -
这可能是内部类不是静态的,或者缺少 getter/setter,或者 autogrow 没有被设置。话虽如此,使用传输对象确实没有什么可耻的。进行 DTO 通常更安全,责任更单一,尽管 DRY 不那么干燥。
-
我也遇到了同样的问题,你是怎么解决的?
标签: java spring inner-classes spring-form