Суть в том, что вы можете использовать th:object
и th:field
только вместе для атрибута базовой модели.Это означает, что вы не можете использовать его при итерации (потому что ${item}
не существует в модели, это переменная, сгенерированная th:each
).Требования прописаны здесь :
Значения атрибутов th:object
в тегах формы должны быть выражениями переменных (${...}
), указывающими только имя атрибута модели, безсвойство навигации.Это означает, что выражение типа ${seedStarter}
допустимо, но ${seedStarter.data}
не будет.
Внутри тега <form>
другой атрибут th:object
не может быть указан.Это согласуется с тем фактом, что HTML-формы не могут быть вложенными.
th:field
устанавливает name
, id
и value
поля.Таким образом, они несколько взаимозаменяемы, но вы должны использовать th:field
, когда это возможно, потому что он предлагает дополнительную интеграцию с пружиной и работает со всеми видами ввода - но они действительно полезны, только когда вы редактируете один объект на странице.
Поскольку у вас есть несколько объектов, которые вы выполняете итерацию, вам придется вручную установить name
, id
и value
, как вы делаете.