微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过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.

希望这个工作!

原文地址:https://www.jb51.cc/ajax/159872.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐