I haben folgende Form:Thymeleaf - unterschiedliche Menge von Parametern
<form th:action="@{'/articles/' + ${article.id} + '/processTest'}" method="post">
<table>
<tr th:each="entry,iter: ${wordsWithTranslation}">
<td><input type="text" th:value="${entry.key.value}" th:name="'q' + ${iter.index}" readonly="readonly"/>
</td>
<td> -----</td>
<td><input type="text" th:name="'a' + ${iter.index}"/></td>
</tr>
</table>
<br/>
<input type="submit" value="Sprawdź"/>
</form>
wordsWithTranslation ist ein HashMap, die unterschiedliche Menge an Elementen enthalten kann.
Und der Controller:
public String processTest(Model model, @PathVariable Long id,
@ModelAttribute(value = "q0") String q0,
@ModelAttribute(value = "a0") String a0,
@ModelAttribute(value = "q1") String q1,
@ModelAttribute(value = "a1") String a1)
Wie kann ich das Methodenparameter beheben nicht so etwas zu tun (ModelAttribute für jedes q und einem Wert)? Gibt es eine Möglichkeit, hier eine Schleife zu machen, oder was ist die beste Lösung dafür?
Es funktioniert mit RequestParam, aber mit ModelAttribute nicht. Es gibt nur 1 Element in qList und 0 in aList. – Helosze
@Helosze '@ ModelAttribute' tut nichts für Bindeparameter. Diese Anmerkung zeigt nur an, dass der Parameter der Methode dem Modell mit dem angegebenen Namen hinzugefügt werden soll. Sie können '@ ModelAttribute' zwar entfernen, Werte werden jedoch trotzdem gebunden. –