У меня есть HTML-форма, в которой есть «вложенный» объект. Если я отправляю enitty только с чистыми атрибутами, без других объектов внутри, это нормально, но для отправки формы контроллеру REST с использованием ajax исключение генерируется не контроллером, связанным с событием, потому что этот «вложенный» объект не переименовывается как атрибут отправленного основного объекта, который равен Product
.Отправка вложенного объекта контроллеру REST
я могу есть данные в двух differentes jquery
путей в операции АЯКС:
$.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 хорошо сконфигурированный объект-манипулятор Jackson?
Здесь представлены форма, вызов 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, представленные в какой-то кнопки:
$.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