Я хотел знать, как списки связываются весной ... и как получить к ним доступ в Thymeleaf.С и без WrapperClass Как добиться добавления одного / нескольких объектов через форму в ArrayList или обычный Array ..
Я был бы очень благодарен за объяснение.
Вот что я пробовал:Форма
<form action="#" th:action="@{/tests}" th:object="${features}" method="post">
<input type="text" th:field="*{featureArrayList[0].name}"/>
<input type="text" th:field="*{featureArrayList[1].name}"/>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
Класс Wrapper
ArrayList<Feature> featureArrayList = new ArrayList<Feature>();
public FeatureWrapper() {
}
public ArrayList<Feature> getFeatureArrayList() {
return featureArrayList;
}
public void setFeatureArrayList(ArrayList<Feature> featureArrayList) {
this.featureArrayList = featureArrayList;
}
Модель:
private String name;
public Feature(String name) {
this.name = name;
}
public Feature() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Контроллер
@GetMapping("/tests")
public String showForm(Model model)
{
FeatureWrapper featureWrapper = new FeatureWrapper();
model.addAttribute("features", featureWrapper);
return "Feature";
}
@PostMapping("/tests")
public String proceedForm(@ModelAttribute("features") FeatureWrapper features,Model model)
{
for(Feature feature: features.getFeatureArrayList())
{
System.out.println(feature.getName());
System.out.println(features.getFeatureArrayList().size());
}
return "Feature";
}
Edit1: теперь он работает с оболочкойКласс и использование статических индексов ... Как бы я достиг этого без класса-оболочки, я много читал о выражении EL $ {var.index} , но как это работает?И как я должен использовать это для динамического добавления моих объектов.Edit2: теперь я могу добавлять отдельные объекты и несколько объектов в список, но я не использую EL Expression, поэтому я хотел знать, когда мне нужно будет использовать что-то вроде этого:
<div th:each="feature,stat:*{featureArrayList}">
<input id="myInput" type="text" th:field="*{featureArrayList[__${stat.index}__].name}"/>
</div>