1. 程式人生 > >在Spring中實現後臺對JSON傳的陣列物件給List型別的引數繫結

在Spring中實現後臺對JSON傳的陣列物件給List型別的引數繫結

就是在後臺接收前端傳的JSON串,其中包含陣列型別的資料。例如傳一個user使用者列表,後臺用List來接收。

其實有多種方法都可以實現,大概就是JSON方式,和非JSON的key/value那種方法。但是後臺前輩告訴我,要考慮前臺不是所有都會這兩種傳參的方式,而且用JSON傳總是不容易出錯的。由此寫下來該方法

後臺定義的用來接收使用者型別的vo類
/**
 * 用來測試JSON傳遞list型的資料vo類
 *
 */
public class UserVo {
	
	private List<User> userList;

	/**
	 * @return the userList
	 */
public List<User> getUserList() { return userList; } /** * @param userList the userList to set */ public void setUserList(List<User> userList) { this.userList = userList; } }

其中User的定義就不詳舉了,大致包含以下幾個欄位

  • name:姓名
  • gender:性別
  • address:地址

controller

/**
 * 測試是否能正確接收到JSON格式的user的list
 * @param userVo
 * @return
 */
@RequestMapping("/queryUsers.action") @ResponseBody public User UserQuery(@RequestBody UserVo userVo,HttpServletRequest request) { List<User> list = userVo.getUserList(); for(User user:list) { System.out.println(user); } return null; }

其中使用了@RequestBody註解,來解析JSON串 模擬前臺傳參

function helloworld
(){ $.ajax({ type:'post', url:'${pageContext.request.contextPath}/queryUsers.action', data:JSON.stringify({"userList":[ {"name":"李四","gender":"女","address":"泵山坡"}, {"name":"張三","gender":"女","address":"呼呼坡"}, {"name":"趙武","gender":"男","address":"落楓坡"}, {"name":"孫柳","gender":"男","address":"破破坡"}] }), contentType:"application/json;charset=UTF-8", success:function(data){ alert(data); } }); }

其中要求"userList"對應Vo的定義好的類變數,name等對應User的欄位

輸出結果 控制檯輸出

李四 [gender: 女  btd: null  address: 泵山坡	]
張三 [gender: 女  btd: null  address: 呼呼坡	]
趙武 [gender: 男  btd: null  address: 落楓坡	]
孫柳 [gender: 男  btd: null  address: 破破坡	]

重寫了User的toString方法,繫結的結果一目瞭然

當然前端的客戶端,就只是執行了一次空的alert()