У меня возникла проблема с привязкой формы к весне.Весна связывание абстрактные Объект
Учитывая это объект со следующей структурой:
- SiteContent
|-List<Panel> boxList
элемент панели выглядит следующим образом:
- Panel
|- Collection<AbstractPanelElement> panelElements
Коллекция с AbstractPanelElements
является критической точкой, так как возможно, что AbstractPanelElements
- Divider
, Address
или Icon
.
Если я отправить форму, которая содержит несколько элементов этих типов я получаю следующее сообщение об ошибке:
org.springframework.beans.InvalidPropertyException:
Invalid property 'boxList[0].panelElements[0]' of bean class [com.panel.SiteContent]:
Illegal attempt to get property 'panelElements' threw exception; nested exception is org.springframework.beans.NullValueInNestedPathException:
Invalid property 'boxList[0].panelElements' of bean class [com.panel.SiteContent]:
Could not instantiate property type [com.panel.AbstractPanelElement] to auto-grow nested property path: java.lang.InstantiationException
После исследований я обнаружил, что вполне возможно, что мы можем установить следующее (InitBinder) в контроллере:
@InitBinder
public void initBinder(WebDataBinder binder){
binder.setAutoGrowNestedPaths(false);
}
Но это не решает проблему, это делает ситуацию, я думаю, что весна не может создать абстрактный класс.
Теперь мой вопрос, возможно ли, что я смогу решить эту проблему или нет пути?
когда произошло это исключение? вызывает появление NullValueInNestedPathException, когда boxList.panelElements имеет значение null, и вы пытаетесь добавить к нему элементы. – vincent
исключение будет выбрано после отправки формы. я отлаживаю его и признаю, что если весна попытается создать экземпляр элемента панели ('AbstractPanelElement') –