通过ajax发布表单,并在play framework java中获取一个表单对象

前端之家收集整理的这篇文章主要介绍了通过ajax发布表单,并在play framework 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的表单时,播放将请求数据绑定到Model对象,我们可以获取Form对象

Form<Permission> permissionFormData = Form.form(Permission.class).bindFromRequest();

我们可以通过permissionFormData.get()获取对象,因为对于具有ajax和没有ajax的post表单的请求是一样的.在ajax的情况下,我做同样的事情,但是当我尝试让Entity成员给我一个No价值异常

Logger.info("---Permission one is "+permissionFormData.get().getPer1());

我在这里做错了什么?在使用ajax时,还有什么其他方法可以从播放表单中获取对象.我想在这里使用对象而不是JSON,因为最后我用JSON持久化对象我必须遍历所有的关键价值并创造一个对象.

编辑:当我尝试简单的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;
});

我目前使用的方法是从ajax请求传递JSON,在我的控制器中,我使用Json.fromJson()从实体对象转换JSON,但我只想知道为什么AJAX请求的行为与正常格式提交不同,即为什么我当两个请求都是同一类型时,无法从请求中获取实体.

提前致谢.

Step 1: Rename all private properties to public and remove getter and setter methods.
e.g.

private String per1= "off"; to public String per1= "off";

Step 2. Ensure your route file is a GET request

Step 3. Try using basic Jquery ajax to test run.

$("#form-permission").on('submit',function() {
   var $this = $(this);
   $.ajax({
     url: '/url/to/controller',type: 'GET'
   });
   return false;
});

您可以随时从GET到POST,方便您,请确保您将JQuery和html表单方法更改为POST值,并将您的Playframework路由文件更改为POST.

希望这个工作!

猜你在找的Ajax相关文章