2017-02-01 56 views
0

我試圖綁定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調用已成功。

如何將此對象列表綁定到後端?提前致謝。

回答

0

嘗試.serializeArray()從jQuery的

$("form").submit(function(event) { console.log($(this).serializeArray()); event.preventDefault(); });

https://api.jquery.com/serializeArray/

相關問題