У меня есть этот вид:Thymeleaf - разное количество параметров
<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 является HashMap, который может содержать различное количество элементов.
И контроллер:
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)
, как я могу установить, что параметры метода не делать что-то подобное (ModelAttribute для каждого ц и значение)? Есть ли способ сделать что-то вроде цикла здесь или что является лучшим решением для этого?
Он работает с RequestParam, но с ModelAttribute нет. В qList и 0 в aList есть только 1 элемент. – Helosze
@Helosze '@ ModelAttribute' ничего не делает для параметров привязки. Эта аннотация просто указывает, что параметр метода должен быть добавлен к модели с указанным именем. Вы можете удалить '@ ModelAttribute' вообще, но значения все равно будут связаны. –