![](/img/trans.png)
[英]How to handle the SQLIntegrityConstraintViolationException in Spring Boot?
[英]How to handle ajax post data in spring boot
我正在使用jquery ui sortable
重新排序我的項目中的頁面順序,但似乎我不知道如何在spring boot中正確處理這個發布的ajax數據。
jQuery的/ AJAX
$("table#pages tbody").sortable({
items: "tr:not(.home)",
placeholder: "ui-state-highlight",
update: function () {
let ids = $("table#pages tbody").sortable("serialize");
let url = "/admin/pages/reorder";
// $.post(url, ids, function (data) {});
$.ajax({
url: url,
method: "post",
data: ids,
beforeSend: function () {
},
complete: function () {
},
success: function (response) {
}
});
}
});
所以從上面來看, ids
變量應該是一個名為id
的數組整數,所以我應該在我的請求中得到類似下面的東西:handler = int[] id
(單數id是正確的)
因此,考慮到上述情況,我嘗試在我的請求處理程序方法中執行此操作:
@PostMapping("reorder")
public void reorder(int[] id) {
int count = 1;
Page page;
for (int pageId : id) {
page = pageRepo.getOne(pageId);
page.setSorting(count);
pageRepo.save(page);
count++;
}
}
但是使用斷點我可以看到id
實際上是null
,因此請求處理程序顯然沒有獲取發送的ajax數據。
我在chrome中遇到的錯誤是:
error: "Internal Server Error"
我嘗試將@RequestBody
添加到方法參數中,如下所示:
public void reorder(@RequestBody int[] id) {...
但是在這種情況下它甚至根本沒有觸及方法中的斷點,我在chrome中得到以下錯誤:
error: "Unsupported Media Type"
如果我不手動設置內容類型,我會得到以下請求有效負載
請求有效負載:
id[]=29&id[]=3
內容類型:
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
我可以將內容類型設置為json,但是我仍然遇到錯誤,我從來沒有在其他技術中這樣做,所以我懷疑這是問題所在。
由於有效負載是id[]=29&id[]=3
,因此您需要
public void reorder(@RequestParam("id[]") int[] id) {
因為id[]
是一個非標准的查詢參數名稱,不能從id
方法參數名稱派生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.