Динамически связывающие списки с тегом формы Spring

У меня есть объект команды FaxForm и он содержит список объектов FaxStatus внутри свойства faxStatusList.

public class FaxForm {
  private List<FaxStatus> faxStatusList;
  public void setFaxStatusList(List<FaxStatus> faxStatusList) {
    this.faxStatusList = faxStatusList;
  }
  public List<FaxStatus> getFaxStatusList() {
    return faxStatusList;
  }
}

Сначала у меня была страница JSP, которая связывает объекты, выполняя следующие действия:

<c:forEach items="${esaFaxForm.faxStatusList}" var="item" varStatus="loop">
  <tr class="tableAltBackground">
    <td>
      <form:checkbox path="faxStatusList[${loop.index}].selected"/>
    </td>
    <td>
      <form:select path="faxStatusList[${loop.index}].status" items="${esaFaxForm.statusOptions}" onchange="checkThisBox(this);"/>
    </td>
    <td>
      <a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.name}</a>
      <form:hidden path="faxStatusList[${loop.index}].name"/>
    </td>
    <td>
      <a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.id}</a>
      <form:hidden path="faxStatusList[${loop.index}].id"/>
    </td>
  </tr>
</c:forEach>

Тем не менее, я пытаюсь выяснить, как я могу сделать привязку без цикла forEach и индекса. Примеры на Spring показывают привязку, установив путь к имени списка. Есть ли способ связать свойства? Я пробовал это, но он терпит неудачу:

<form:checkbox path="faxStatusList.faxStatus.selected"/>
<form:select path="faxStatusList.faxStatus.status" items="${esaFaxForm.statusOptions}"/>

FaxStatusList имеет метод getter и setter, а переменные FaxStatus имеют свойства getter/setter. Я получаю сообщение об ошибке "Недопустимое свойство" faxStatusList.faxStatus 'класса bean...

Ответ 1

Spring теги формы имеют тег флажков. Вы можете использовать его следующим образом, чтобы автоматически выполнить привязку:

<form:checkboxes items="${faxStatusList}" path="faxStatusList" itemLabel="name" itemValue="id" delimiter="<br/>" onclick="yourOnClickMethodIfYouNeed(this);"/>

В приведенном выше фрагменте будет отображаться список элементов флажка, разделенных тегом br. Любые изменения, внесенные в состояние флажков, будут соответствующим образом отражены в вашем FaxForm. Объект faxStatusList.