J'ai un objet de commande FaxForm
et il contient une liste d'objets FaxStatus
à l'intérieur d'une propriété faxStatusList
.Listes à liaison dynamique avec l'étiquette de formulaire de Spring
public class FaxForm {
private List<FaxStatus> faxStatusList;
public void setFaxStatusList(List<FaxStatus> faxStatusList) {
this.faxStatusList = faxStatusList;
}
public List<FaxStatus> getFaxStatusList() {
return faxStatusList;
}
}
J'avais d'abord une page JSP qui lierait les objets en procédant comme suit:
<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>
Cependant, je suis en train de comprendre comment je pouvais faire la liaison sans la boucle foreach et index . Les exemples sur le site Web Spring montrent la liaison en définissant le chemin d'accès au nom de la liste. Y a-t-il un moyen de lier les propriétés? Je l'ai essayé, mais il échoue:
<form:checkbox path="faxStatusList.faxStatus.selected"/>
<form:select path="faxStatusList.faxStatus.status" items="${esaFaxForm.statusOptions}"/>
Le faxStatusList a une méthode getter et setter et les variables FaxEtat ont chacun des propriétés getter/setter. J'obtiens l'erreur "Propriété invalide 'faxStatusList.faxStatus' de la classe de haricot ..."
faxStatusList est une propriété indexée. Vous ne pouvez donc pas utiliser quelque chose comme faxStatusList.faxStatus. Utilisez faxStatusList []. FaxStatus à la place. –
En fait, j'aime votre code actuel, car il offre une grande flexibilité. – Steve