0

您好我想问您是否可以将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

请帮我。

谢谢。

4

2 回答 2

0

问题是Group[] groupArray尚未初始化,因此当它进入数组并在位置 0 处查找对象 Group 时,它找不到 Group 对象。

如果您事先知道数组中可以包含的对象数量,您可以在 PageForm 的构造函数中的数组 groupArray 中插入任意数量的 Group 对象。

如果您不知道数组中有多少对象(因为您将根据来自表单的数据创建它们),您需要提供一种方法来在对象尚未创建时创建新的 Group 对象之前在那个位置实例化。我认为最简单的方法是将Group[]数组更改为 aList<Group>并使用惰性列表,如 Spring AutoPopulatingList、 Apache Commons Collections LazyList或库 Guava 提供的列表。

于 2011-01-13T17:03:59.633 回答
-1

尝试更改您的属性名称,可能还有 myChecked 和 getter/setter,例如 getChecked 和 setChecked

于 2018-09-17T23:18:17.697 回答