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[]これを取得する最も簡単な方法は、配列をに変更し、Spring AutoPopulatingList、Apache Commons Collections LazyList、またはライブラリGuavaによって提供されるList<Group>ようなレイジーリストを使用することだと思います。

于 2011-01-13T17:03:59.633 に答える