Spring 表單對映到Bean的規則,並實現最簡化Spring表單提交
Spring中form表單對映到Bean的限止:
* 1,form表單中的欄位必須和Bean裡的欄位一樣,或比bean裡的欄位少
* 2,form表單中的name和Bean的欄位必須小寫
由於以上限止,本人研究有一下方法解決demo如下
<div id="demo">
<form >
<input name="id"/>
<input name="name"/>
</form>
</div>
用FormData獲取form的資料
new FormData($("#demo form")[0];
如果裡面的資料有增加可以刪除:
FormData用法:
FormData.delete("name")刪除Key為name的資料
FormData.set("name","value")修改Key為name的值為value
FormData.append("name","value")增加Key為name的職位value
FormData.get("name")獲取Key為name的值
FormData.has("name")判斷該Key為name的值存不存在
用該方法把FormData物件序列化
function string_FormData(formData) { var objData = {} for (var entry of formData.entries()){ objData[entry[0]] = entry[1]; } return JSON.stringify(objData); };
前端用ajax傳送該資料
var data = string_FormData(new FormData($("#demo form")[0])
$.ajax({ url: "../index/formAction.do", type: "POST", contentType : 'application/json;charset=utf-8', //設定請求頭資訊 dataType:"json", data: data, //將Json物件序列化成Json字串,toJSON()需要引用jquery.json.min.js success: function(data){ alert(JSON.stringify(data)); }, error: function(res){ alert(res.responseText); } });
Bean:
import com.alibaba.fastjson.annotation.JSONField;
/**
* @JSONField(name="ID")
* 它的作用為把Bean中小寫的屬性,轉換json的時候
* 把它轉換為大寫
**/
public class User { private int id; private String name;
@JSONField(name="ID") public int getId() { return id; } public void setId(int id) { this.id = id; }
@JSONField(name="NAME") public String getName() { return name; } public void setName(String name) { this.name = name; }
}
後端接收引數方法
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RequestBody;import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature
@RequestMapping(value = "/formAction", method ={RequestMethod.POST}) @ResponseBody public String formAction(@RequestBody List<User> users) throws Exception{ String result = ""; if(users == null || users.size() <= 0){
return "No any ID.中文";
}
/**
* 把物件轉換為JSON,KEY為大寫的字串
**/ result = JSONObject.toJSONString(users.get(0), SerializerFeature.WriteMapNullValue); return result; }
以上就是結合FormData把form表單通過註解用Spring傳到Bean的方法,並且隨意轉換為大小寫的辦法。