Предположим, у меня есть объект, определенный следующим образом:
class SaleHeader
{
Date saleDate;
List<SaleItem> saleItems;
}
class SaleItem
{
Long itemId;
String itemName;
List<BatchDetail> batchDetails;
}
class BatchDetail
{
Long batchId;
String batchCode;
Int qty;
}
Теперь мой экран выглядит следующим образом
Я хочупривязать POST к моему контроллеру, который принимает атрибут ModelAttribute SaleHeader
Так что в моем представлении JSP моя форма настроена как (некоторые псевдоэлементы)
<form method="post" action="/saveSales">
<input type="text" name="saleDate" />
<group>
<h3>Sale Item</h3>
<select name="saleItems[0].itemName">
<options ... />
</select>
<group>
<row>
Batch Code : <input name="saleItems[0].batchDetails[0].batchCode" />
Batch Qty : <input name="saleItems[0].batchDetails[0].qty" />
<row>
<row>
Batch Code : <input name="saleItems[0].batchDetails[1].batchCode" />
Batch Qty : <input name="saleItems[0].batchDetails[1].qty" />
<row>
</group>
</group>
<group>
<h3>Sale Item</h3>
<select name="saleItems[0].itemName">
<options ... />
</select>
<group>
<row>
Batch Code : <input name="saleItems[1].batchDetails[0].batchCode" />
Batch Qty : <input name="saleItems[1].batchDetails[0].qty" />
<row>
<row>
Batch Code : <input name="saleItems[1].batchDetails[1].batchCode" />
Batch Qty : <input name="saleItems[1].batchDetails[1].qty" />
<row>
</group>
</group>
</form>
Проблема, с которой я сталкиваюсь, заключается в том, что Spring Binder не связывает свойство saleItems в атрибуте модели SaleHeader.
В весенних документах упоминается, что я могу связывать массивы пользовательского интерфейса, используя подход entry [index].
Поддерживается ли этот многоуровневый сценарий в Spring 4.0.2?