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

回到顶部