我有一个表单,用于添加用html和thymeleaf编写的产品。
<form th:action="@{/products/get}" th:object="${form}" method="post">
<div id="fields">
<label for="name"></label><input type="text" id="name" name="name" autofocus="autofocus" placeholder="NAME" required/><br>
<label for="label"></label><input type="text" id="label" name="label" autofocus="autofocus" placeholder="LABEL" required/><br>
在窗体下面,有一个按钮,每次按下时都会向窗体添加两个输入字段。新的输入字段与上面的两个输入字段相同。其思想是用户可以使用相同的表单输入任意多个产品的数据。例如,按下按钮一次后,窗体将如下所示:
<form th:action="@{/products/get}" th:object="${form}" method="post">
<div id="fields">
<label for="name"></label><input type="text" id="name" name="name" autofocus="autofocus" placeholder="NAME" required/><br>
<label for="label"></label><input type="text" id="label" name="label" autofocus="autofocus" placeholder="LABEL" required/><br>
<label for="name"></label><input type="text" id="name" name="name" autofocus="autofocus" placeholder="NAME" required/><br>
<label for="label"></label><input type="text" id="label" name="label" autofocus="autofocus" placeholder="LABEL" required/><br>
我想使用输入字段中的值创建productform类的arraylist,然后使用@modelattribute将它传递给我的控制器。
public class ProductForm{
private String name;
private String label;
//getters and setters
}
然后创建了一个将productform Package 到arraylist中的类
public class ProductFormArray {
ArrayList<ProductForm> forms;
//getters and setters
}
还有一个控制器
@Controller
@RequestMapping(value = "/products")
public class CreateAccountControllerTemporary {
@RequestMapping(value = "/get", method = RequestMethod.POST)
public String createAccount(@ModelAttribute(name = "form")ProductFormArray form){
//some code
}}
我的问题是我不知道如何使用输入字段中的值将对象添加到表单arraylist中?这有可能吗?如何更改我的html文件?
1条答案
按热度按时间uklbhaso1#
这当然是可能的,我在《驯服百里香》一书的第361页到第389页对此进行了解释。
你可以在网上免费查阅这本书的来源https://github.com/wimdeblauwe/taming-thymeleaf-sources/tree/main/chapter16
很难将30页总结成一个stackoverflow答案,但简单地说,请查看:
createteamformdata.java:这类似于
ProductFormArray
班级。我确实使用数组而不是数组ArrayList
.java:这类似于
ProductForm
班级。java:这是使用
CreateTeamFormData
.edit.html->这是“thymeleaf”模板。请注意,我使用的是thymeleaf片段
edit-teamplayer-fragment
对于形式中重复自身的部分(因此name
以及label
(案例中的字段)edit-teamplayer-fragment.html:这里是您需要跟踪
index
对于每个片段: