您好我想询问您是否可以将bean数组分配为表单
例如我有一个表格:
PageForm{
Group[] groupArray;
Group[] getGroupArray(){
return groupArray;
}
void setGroupArray( Group[] groupArray ){
this.groupArray = groupArray;
}
}
Group{
boolean isChecked;
boolean getIsChecked(){
return isChecked;
}
void setIsChecked( boolean ischecked ){
this.isChecked = ischecked;
}
}
我喜欢在我的jsp中访问这个组数组。我能用这个做到这一点:
<spring:form>
<spring:checkbox path="groupArray[0].isChecked" />
<spring:checkbox path="groupArray[1].isChecked" />
<spring:checkbox path="groupArray[2].isChecked" />
</spring:form>
我得到的是一个例外:
org.springframework.beans.NullValueInNestedPathException:bean类[PageForm]的属性'groupArray [0]'无效:无法访问索引属性路径'groupArray [0]'中引用的属性的索引值:返回null
请帮我。
谢谢。
问题是Group[] groupArray
尚未初始化,因此当它转到数组并在位置0查找对象Group时,它找不到Group对象。
如果您事先知道数组中可以存在的对象数,则可以在PageForm的构造函数中的数组groupArray中插入所需数量的Group对象。
如果您不知道数组中有多少个对象(因为您将根据来自表单的数据创建它们),则需要提供一种在对象尚未创建时创建新Group对象的方法。之前在那个位置实例化。我认为最简单的方法是将你的Group[]
数组更改为List<Group>
,并使用像Spring AutoPopulatingList,Apache Commons Collections LazyList或库Guava提供的懒惰列表。
尝试更改您的属性名称,也可以是myChecked和getter / setter,例如getChecked和setChecked