Форма сообщения через 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 есть и что-то вы должны изучать. Таким образом, нет никаких дополнительных усилий для создания объектов, которые вы хотите сохранить.
НТН.