通过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请求的行为与正常格式提交不同,即为什么我当两个请求都是同一类型时,无法从请求中获取实体. 提前致谢.
private String per1= "off"; to public String per1= "off";
$("#form-permission").on('submit',function() { var $this = $(this); $.ajax({ url: '/url/to/controller',type: 'GET' }); return false; }); 您可以随时从GET到POST,方便您,请确保您将JQuery和html表单方法更改为POST值,并将您的Playframework路由文件更改为POST. 希望这个工作! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |