Я построил форму в тимелисте на основе Java List-Object, который содержит Pojo-Objects, который снова содержит несколько List-Objects.
Теперь я читаю здесь , что списки должны быть обернуты, чтобы правильно обрабатываться thymeleaf / springEL. Поэтому я создал класс-обертку для внешнего списка, который отлично работает.
Вложенные списки, однако, отображаются корректно, но никогда не передаются, они возвращаются как нулевые.
Pojo выглядит примерно так:
public class Text {
private String textId;
private String type;
private List<String> linesDe;
private List<String> linesEn;
// getters and setters
}
Wrapper:
public class TextListWrapper {
private List<Text> textList;
// getters and setters
}
И следуя шаблону / форме:
<form method="post" th:object="${listwrapper}">
<table>
<thead>
<tr>
<th>Text Id</th>
<th>Type</th>
<th>English</th>
<th>German</th>
</tr>
</thead>
<tbody>
<th:block th:each="text, iter : *{textList}">
<tr>
<td><input type="text" th:field="*{textList[__${iter.index}__].textId}" /></td>
<td><input th:field="*{textList[__${iter.index}__].type}" /></td>
<td>
<th:block th:each="lineEn, line : *{textList[__${iter.index}__].getLinesEn()}">
<input type="text" th:field="*{textList[__${iter.index}__].linesEn[__${line.index}__]}" /><br />
</th:block>
</td>
<td>
<th:block th:each="lineEn, line : *{textList[__${iter.index}__].getLinesEn()}">
<input type="text" th:field="*{textList[__${iter.index}__].linesDe[__${line.index}__]}" /><br />
</th:block>
</td>
</tr>
</th:block>
</tbody>
</table>
<button type="submit">Do something</button>
Как видите, для списков, содержащихся в Text-Pojo, есть вложенные циклы. Форма отображается правильно, все тексты присутствуют. Когда я отправляю форму, простые поля listWrapper
s отправляются, только содержащиеся в них списки linesEn
и linesDe
всегда равны нулю.
Может кто-нибудь объяснить, почему это не работает, и дать мне понять, что мне придется изменить?
Я действительно не могу понять, как заставить это работать. Что действительно заставляет меня задуматься, так это то, почему списки отображаются, но не могут быть представлены таким образом.
Любая помощь очень ценится.