NullValueInNestedPathException для привязки класса Bean [] - PullRequest
0 голосов
/ 13 января 2011

Здравствуйте, я хотел бы спросить, можете ли вы назначить массивы бинов в виде

например у меня есть форма:

 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]': вернул ноль

Пожалуйста, помогите мне.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

попробуйте изменить имя вашего атрибута, например myChecked и getter / setter, например, getChecked и setChecked

0 голосов
/ 13 января 2011

Проблема в том, что Group[] groupArray не был инициализирован, поэтому, когда он переходит в массив и ищет объект Group в позиции 0, он не может найти объект Group.

Если вы заранее знаете, сколько объектов может быть в массиве, вы можете вставить столько объектов Group, сколько вам нужно, в массив groupArray в конструкторе PageForm.

В случае, если вы не знаете, сколько объектов у вас будет в массиве (потому что вы будете создавать их из данных, поступающих из формы), вам потребуется предоставить способ создания новых объектов Group, когда объект не был создан в этой должности ранее. Я думаю, что самый простой способ сделать это - изменить массив Group[] на List<Group> и использовать ленивый список, например Spring AutoPopulationList , коллекции Apache Commons LazyList или тот, который предоставлен Библиотека Гуава.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...