1. 程式人生 > >springmvc controller入參Object與前臺ajax傳送注意項

springmvc controller入參Object與前臺ajax傳送注意項

1.get方式
$.ajax({
url : ly.getWebRootPath() + "/userController/edit";,
data : rowData,

dataType : "json",

a.以上沒寫type預設為type=“GET”

b.rowData為json物件{"username":"u","password":"p"}

c.由於上述是get方式所以請求會是userController/add?username=u&password=p,(ps;在chrome-Network檢視Headers--Query String Parameters

d.後臺直接如下封裝進入參user

@RequestMapping("/add")
@ResponseBody
public Json add(User user){}

)

2.post方式封裝多個引數 包括分頁

$.ajax({
url : /usrController/getAllUsers,
data : $("#form").serialize(),//此處用的是序列化字串
type : "POST", 

a.前臺

b.後臺如下 getAllUsers所有入參都會一一與與a前端截圖中的Form Data資料匹配

(比如有一個username:"name" ,第一個入參user有方法setUsername則會set進去,同時第三個入參username剛好是RequestParam("username"),

那麼第三入參也賦值,)

/**

* @param page 分頁引數
* @param user 實體引數   --   @ModelAttribute---userListSearch對應前臺Form表單ID
* getAllUsers(Page page, @ModelAttribute(ID)User user)
* getAllUsers(Page page, User user,@RequestParam(value="username",required=false)String username)
* @return
*/
@RequestMapping("/getAllUsers")
@ResponseBody
public Map<String, Object> getAllUsers(Page page, User user,@RequestParam(value="username",required=false)String username) {
System.out.println(page);

3.post方式(@RequestBody接受List物件)

前臺:

$.ajax({
url : ly.getWebRootPath() + "/userController/delete",
data : JSON.stringify(rowDatas),
type : "POST",
dataType : "json",
contentType :  "application/json;charset=utf-8",

a.type為post

b.data一定要轉出json物件的字串形式

c.指定contentType為json格式便於後臺消費

後臺:

@RequestMapping(value = "/delete", method = {RequestMethod.POST}, consumes = "application/json")
@ResponseBody
public Json delete(@RequestBody List<User> users) throws UserException {

a.@RequestMapping consumes = "application/json"接收消費前臺json物件字串

b.入參用@RequestBody