Thymeleaf表单与ArrayList对象一起提交
我已经编写了一个简单的程序,用于使用data(ArrayList)进行表单提交,以便从表发送到控制器类。
提交表单时,数据始终为空,不确定我在这里做错了什么。
我几乎要花很多时间来确定问题,但运气不好:(
(在Post方法中始终为null的地方)
public class AccountContoller {private ArrayList<AccountwithSelection> allAccountwithSelect = new ArrayList<AccountwithSelection>();
public AccountContoller()
{
//Written some test data in Array
AccountwithSelection accountwithSelection1 = new AccountwithSelection();
accountwithSelection1.setAccountnumber("Acct1");
accountwithSelection1.setIlc("ILC1");
allAccountwithSelect.add(accountwithSelection1);
AccountwithSelection accountwithSelection2 = new AccountwithSelection();
accountwithSelection2.setAccountnumber("Acct2");
accountwithSelection1.setIlc("ILC2");
allAccountwithSelect.add(accountwithSelection2);
}
@RequestMapping(value = "/accountload", method = RequestMethod.GET)
String accountload(Model model) {
AccountSelectionListWrapper wrapper = new AccountSelectionListWrapper();
wrapper.setAccountList(allAccountwithSelect);
model.addAttribute("accountload", wrapper);
return "accountload";
}
@RequestMapping(value = "/accountload", method = RequestMethod.POST)
public String addimeiPost(Model model,
@ModelAttribute("accountload") AccountSelectionListWrapper wrapper,
HttpServletRequest request) {
System.out.println(wrapper.getAccountList()); //Always getting null, why ?
return "accountload";
}
}
public class AccountwithSelection {public String accountnumber, ilc;
public String getAccountnumber() {
return accountnumber;
}
public void setAccountnumber(String accountnumber) {
this.accountnumber = accountnumber;
}
public String getIlc() {
return ilc;
}
public void setIlc(String ilc) {
this.ilc = ilc;
}
}
public class AccountSelectionListWrapper {public ArrayList<AccountwithSelection> accountList;
public ArrayList<AccountwithSelection> getAccountList() {
return accountList;
}
public void setAccountList(ArrayList<AccountwithSelection> accountList) {
this.accountList = accountList;
}
}
(accountload.html)
<form action="#" th:action="accountload" th:object="${accountload}" method="post"> <div class="row">
<div class=form-group-1>
<input type="submit" value="Send Data" name="action">
</div>
</div>
<table id="mytable" class="table">
<tbody class="table-tbody" style="width: 90%">
<tr class="table-head">
<th>ACCOUNT NUMBER</th>
</tr>
<tr class="table-row">
<tr class="table-row" th:each="account, stat : *{accountList}">
<td class="table-data" th:text="${account.getAccountnumber()}"
th:field="*{accountList[__${stat.index}__].accountnumber}"
th:value="${account.getAccountnumber()}"></td>
</tr>
</tbody>
</table>
</form>
回答:
<td />
元素未与表单一起提交。您需要使用某种输入。它看起来应该像这样:
<td class="table-data"> <input type="text" th:field="*{accountList[__${stat.index}__].accountnumber}" />
</td>
或者,如果您要提交而没有将字段视为可编辑,则类似以下内容
<td class="table-data"> <span th:text="${account.accountnumber}" />
<input type="hidden" th:field="*{accountList[__${stat.index}__].accountnumber}" />
</td>
以上是 Thymeleaf表单与ArrayList对象一起提交 的全部内容, 来源链接: utcz.com/qa/428612.html