我有一個HTML表單,其中有一個「嵌套」對象。 如果我發送一個只有純屬性的enitty,沒有其他實體在裏面,這是可以的,但是使用ajax發送表單到一個REST控制器,拋出一個異常而不是事件到達控制器,因爲這個'嵌套'對象沒有被重新分配爲發送的主要實體的屬性,即Product
。將嵌套對象提交給REST控制器
我能搞到兩個differentes jquery
方式AJAX運行數據:
$.param($('form').serializeArray())
"id=&type.id=1&name=One"
和
JSON.stringify($('form').serializeArray())
"[{"name":"id","value":""},{"name":"type.id","value":"1"},{"name":"name","value":"One"}]"
而在後一種情況下,我當然可以創建一個$.each
jquery
功能完全轉換目的。 但有沒有什麼辦法可以很容易地使用jquery
轉換它ou配置良好的傑克遜映射器對象?
這裏是表單,ajax調用,java實體和控制器。
形式:
<form>
<input type="hidden" name="id"/>
<select id="type.id">
<option value='1'>One</option>
<!-- ... -->
</select>
<input type="text" id="name"/>
</form>
實體:
@Entity
@Table
public class Product {
@Id
@GeneratedValue
private Integer id;
@ManyToOne
private Type type;
@Column(nullable = false, length = 250)
private String name;
/* getters and setters */
}
@Table
@Entity
public class Type {
@Id
@GeneratedValue
@Column(length = 5)
private Integer id;
@Column(length = 50, nullable = false)
private String name;
/* getters and setters */
}
阿賈克斯一些按鈕提交:
$.ajax({
type : "POST",
url : "create",
contentType : "application/json; charset=utf-8",
dataType : "json",
data : /*
here stands the doubt. How serialize my form?
*/,
success : function(data) {
if (data === true) {
alert('Success!');
} else {
console.log('Some error');
}
}
});
控制器:
@RequestMapping(value = "/create", method = RequestMethod.POST)
@ResponseBody
public Boolean create(@RequestBody Domain model) throws Exception {
try {
getService().create(model);
return true;
} catch (Exception e) {
return false;
}
}
謝謝嘗試幫助我,史蒂文。但主要問題仍然是:如何序列化形式? – Moesio