我試圖綁定Spring控制器中用@RequestBody
註解的對象列表。我使用Thymeleaf作爲模板引擎。我正在使用Kotlin
編程語言。如何將表單提交中的對象列表綁定到帶有Thymeleaf的彈簧@RequestBody
下面是HTML代碼
<form class="attendanceBook" id="form_submit" role="form" method="post" action="/attendances">
<table class="table table-striped">
<th>Role Number</th>
<th style="width: 30%">Student Name</th>
<th>Present</th>
<div th:each="std, stat : ${studentList}" class="separator">
<tr>
<td th:text="${std.roleNumber}"></td>
<td th:text="${std.studentName}"></td>
<td><input type="checkbox" th:name="|i[__${stat.index}__]|" id="i" /></td>
<td><input type="text" th:name="|t[__${stat.index}__]|" th:value="*{studentList[__${stat.index}__].studentId}"/> </td>
</tr>
</div>
</table>
<input type="submit" id="submit_btn" value="Click"/>
</form>
當我提交轉換爲與jQuery JSON格式的形式。這裏只是將表單數據轉換爲Json的JavaScript部分。
var genFormSubmitParams = function (context) {
var _this = $(context),
data = {};
_this.find('[name]').each(function (index, value) {
var _this = $(this),
name = _this.attr('name'),
value = _this.val();
data[name] = value;
});
var params = {};
params["data"] = JSON.stringify(data);
console.log(params["data"]);
return params;
};
這裏是控制器。
@PostMapping
fun patchAttendance(@RequestBody attendanceJson: AttendanceJsonWrapper): ResponseEntity<*> {
{
logger.info("attendanceJson list size {}", attendanceJson.attendanceJsons?.size)
logger.info("attendanceJson {}", attendanceJson)
return responseOK(attendanceJson)
}
這是我需要綁定一行的數據類。
data class AttendanceJson (
var i: String = "",
var t: String = ""
)
這裏是對象列表的實際數據類的包裝類。我用Java寫了這個。
public class AttendanceJsonWrapper {
List<AttendanceJson> attendanceJsons;
public AttendanceJsonWrapper() {
}
public AttendanceJsonWrapper(List<AttendanceJson> attendanceJsons) {
this.attendanceJsons = attendanceJsons;
}
public List<AttendanceJson> getAttendanceJsons() {
return attendanceJsons;
}
public void setAttendanceJsons(List<AttendanceJson> attendanceJsons) {
this.attendanceJsons = attendanceJsons;
}
}
當我張貼的JavaScript控制檯顯示此日誌
{"i[0]":"on","t[0]":"90","i[1]":"on","t[1]":"106"}
但它不是在數據類AttendanceJson
作爲對象綁定。 attendanceJsons
列表保持爲空,但ajax調用已成功。
如何將此對象列表綁定到後端?提前致謝。