Spring MVC Многоуровневая таблица пользовательского интерфейса для привязки ModelAttribute - PullRequest
0 голосов
/ 18 мая 2019

Предположим, у меня есть объект, определенный следующим образом:

class SaleHeader
{
    Date saleDate;
    List<SaleItem> saleItems;

}

class SaleItem
{
    Long itemId;
    String itemName;
    List<BatchDetail>  batchDetails;
}

class BatchDetail
{
    Long batchId;
    String batchCode;
    Int   qty;
}

Теперь мой экран выглядит следующим образом

enter image description here

Я хочупривязать 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?

...