Java如何實現form表單提交的數據自動對應實體類(源碼)

原生Java+JQuery form表單serializeArray提交自動對應java實體,這是一個實際的例子:

html界面

<form id="data-form">
    秒殺一:<input class="td_input" name="killA" type="number"><br>
    秒殺二:<input class="td_input" name="killB" type="number"><br>
    秒殺三:<input class="td_input" name="killC" type="number"><br>
    秒殺四:<input class="td_input" name="killD" type="number"><br>
</form>
<div>
    <span id="killApple" style="padding: 20px;">開始秒殺</span>
</div>

JS腳本,表單序列化 + 異步請求

//點擊提交,發送異步請求
$("#killApple").click(function(content){
	//獲取表單數據,並序列化
	var formData = $("#flop-form").serializeArray();
	//將序列化數據轉爲對象
	var formObject = {};
	for (var item in formData) {
	    formObject[formData[item].name] = formData[item].value;
	}
	formData = JSON.stringify(formObject);
	//發送JSON到服務器
	$.ajax({
	    type: "POST",
	    url: "/kill/killOrder",
	    contentType: "application/json",  //一定要設置這一行,很關鍵
	    data : formData,
	    datatype: "json",
	    success: function (data) {
	        alert(JSON.stringify(data));
	    }
	});
});

秒殺下單控制器

package com.seesun2012.controller;

import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.seesun2012.dao.entity.KillOrder;
import com.seesun2012.utils.Result;

/**
 * 【秒殺下單】控制器
 * 
 * @author [email protected]
 *
 */
@Controller
@RequestMapping("/kill")
public class GameController extends BaseController{

    /**
     * 襯衫秒殺
     */
    @RequestMapping(value = "/killApple", method = RequestMethod.POST, consumes = "application/json")
    @ResponseBody
    public Result killOrder(HttpServletRequest request, @RequestBody KillOrder ko){
    	try {
    	    //具體業務實現
            return Result.build(200, "秒殺成功");
    	} catch (Exception e) {
            return Result.build(500, e.getMessage());
        }
    }

}

秒殺實體Bean

package com.seesun2012.dao.entity;

/**
 * 秒殺參數實體
 */
public class KillOrder {

    private Integer killA;
    private Integer killB;
    private Integer killC;
    private Integer killD;
	
    //TODO GET、SET方法...
    
}

秒殺結果返回工具類

package com.seesun2012.utils;

import java.io.Serializable;
import java.util.HashMap;

/**
 * 統一返回結果類
 * 
 * @author [email protected]
 *
 *//
public class Result extends HashMap<String, Object> implements Serializable {

	private static final long serialVersionUID = 1L;
	public static final Result SUCCEED = new Result(0, "操作成功");

	public Result(int status, String massage) {
		super();
		this.put("status", status).put("message", massage);
	}

	public Result put(String key, Object value) {
		super.put(key, value);
		return this;
	}

	public static Result build(int i, String message) {
		return new Result(i, message);
	}

}

補充說明:
前端傳入var arr = new Array(),後端對應接收List<String>類型,前端異步代碼:

var arr = new Array();
var id = 'vpZKILaTvCfoqh4AZjx';
$.ajax({
	type: "POST",
	url: "/kill/insertBeatch",
	data:{
		phoneArr : arr,
 		id : id
 	},
	dataType: "json",
	success:function(res){
 		alert("導入成功!");
	},
	error : function(res) {
		alert("請求失敗,請稍後重試!");
	}
});

後端接收請求參數代碼:

	/**
     * 批量導入
     */
    @RequestMapping(value = "/insertBeatch", method = RequestMethod.POST)
	@ResponseBody
    public Result killOrder(HttpServletRequest request, 
    	@RequestParam("phoneArr[]") ArrayList<String> phoneArr,
    	@RequestParam("voucherId") String id){
    	try {
    	    //具體業務實現
            return Result.build(200, "秒殺成功");
    	} catch (Exception e) {
            return Result.build(500, e.getMessage());
        }
    }


























注:以上內容僅提供參考和交流,請勿用於商業用途,如有侵權聯繫本人刪除!


持續更新中…

如有對思路不清晰或有更好的解決思路,歡迎與本人交流,QQ羣:273557553
你遇到的問題是小編創作靈感的來源!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章