您好我想询问您是否可以将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;
}
}
id喜欢在我的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: 无效的属性'groupArray [0]' bean类[PageForm]:无法访问 引用的属性的索引值 在索引属性路径中 'groupArray [0]':返回null
请帮帮我。
感谢。
答案 0 :(得分:0)
问题是Group[] groupArray
尚未初始化,因此当它转到数组并在位置0查找对象组时,它找不到Group对象。
如果您事先知道数组中可以存在的对象数,则可以在PageForm的构造函数中的数组groupArray中插入所需数量的Group对象。
如果您不知道数组中有多少个对象(因为您将根据来自表单的数据创建它们),您需要提供一种在对象时创建新的Group对象的方法之前没有在那个位置实例化过。我认为最简单的方法是将Group[]
数组更改为List<Group>
并使用像Spring AutoPopulatingList,Apache Commons Collections LazyList这样的惰性列表或者图书馆番石榴。
答案 1 :(得分:-1)
尝试更改您的属性名称,例如myChecked和getter / setter 例如getChecked和setChecked