Форма сообщения через ajax и получить объект формы в игровой системе java
Я использую play framework 2.3.8 java и используя ajax для отправки формы, но я не могу получить объект Form из этого запроса. Моя проблема объясняется ниже.
У меня есть модель
@Entity
public class Permission {
@Id
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String per1= "off";
private String per2= "off";
// getter setters
}
моя форма
<form id="form-permission">
<!--Setting "on" and "of" value from js-->
<input type="checkbox" id="per1" name="per1">
<input type="checkbox" id="per2" name="per2">
<input type="submit" >
</form>
$('#form-permission').on('submit',function(){
var uid=// id to update
myJsRoutes.controllers.MyController.updatePer(uid).ajax({
data : $("#form-permission").serialize(),
success : function(data) {
console.log(data);
});
return false;
});
При отправке формы без ajax, тогда играйте привязки, которые запрашивают данные для модели объекта, и мы можем получить объект Form, например
Form<Permission> permissionFormData = Form.form(Permission.class).bindFromRequest();
и мы можем получить объект permissionFormData.get()
, так как запрос одинаковый для почтовой формы с ajax и без ajax. В случае ajax я делаю то же самое, но когда я пытаюсь получить из него элементы Entity, Без исключения значения с
Logger.info("---Permission one is "+permissionFormData.get().getPer1());
Что я делаю неправильно здесь? И есть ли какие-либо другие подходы к получению объекта из формы в игре при использовании ajax. Мне нужен объект здесь вместо JSON, потому что в конце я сохранил объект с помощью JSON. для итерации всего его ключевого значения и создания объекта.
EDIT:, когда я пытаюсь просто ajax, он дал мне то же исключение
$("#form-permission").on('submit', function() {
var $this = $(this);
var uid=//some uid
$.ajax({
url: '/account/permission?id='+uid,
data: $this.serialize(),
type: 'POST'
});
return false;
});
Подход, который я использую в настоящее время, заключается в передаче JSON из запроса ajax, а в моем контроллере я делаю Json.fromJson()
для преобразования JSON из объекта сущности, но я просто хочу знать, почему запрос AJAX ведет себя иначе, чем нормальная форма submit, то есть почему я я не могу получить объект от запроса, когда оба запроса одного типа.
Спасибо заранее.
Ответы
Ответ 1
Шаг 1: Переименуйте все частные свойства в общедоступные и удалите методы getter и setter. например
private String per1= "off"; to public String per1= "off";
Шаг 2. Убедитесь, что ваш route
файл является запросом GET
Шаг 3. Попробуйте использовать базовый JQuery ajax для тестирования.
$("#form-permission").on('submit', function() {
var $this = $(this);
$.ajax({
url: '/url/to/controller',
data: $this.serialize(),
type: 'GET'
});
return false;
});
Вы всегда можете от GET до POST в удобное для вас время, любезно гарантируйте, что вы измените свой метод JQuery и html на значение POST, а также ваш файл маршрутов Playframework в POST.
Надеюсь, что это сработает!
Ответ 2
Ну, другой подход, который вы ищете, где вы хотите, чтобы объект вместо Json на стороне сервера -
Вы всегда можете де-сериализовать его.
Инструменты вроде gson и quickxml json есть и что-то вы должны изучать. Таким образом, нет никаких дополнительных усилий для создания объектов, которые вы хотите сохранить.
НТН.