cod*_*mer 12 java forms ajax jquery playframework
我正在使用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
}
Run Code Online (Sandbox Code Playgroud)
我的表格
<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;
});
Run Code Online (Sandbox Code Playgroud)
当提交没有ajax的表单时, play会将请求数据绑定到模型Object,我们可以获得Form对象
Form<Permission> permissionFormData = Form.form(Permission.class).bindFromRequest();
Run Code Online (Sandbox Code Playgroud)
我们可以通过获得对象permissionFormData.get() ,因为该请求是针对相同职位形式Ajax和不阿贾克斯阿贾克斯我做同样的事情,但是当我试图让实体成员从它给了我一个的情况下没有价值的例外与
Logger.info("---Permission one is "+permissionFormData.get().getPer1());
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?还有其他方法可以在使用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;
});
Run Code Online (Sandbox Code Playgroud)
我目前使用的方法是从ajax请求传递JSON,在我的控制器中我Json.fromJson()从实体对象转换JSON但我只是想知道为什么AJAX请求的行为与普通表单提交不同,即为什么我无法获得当两个请求属于同一类型时,请求中的实体.
提前致谢.
第 1 步:将所有私有属性重命名为 public,并删除 getter 和 setter 方法。例如
private String per1= "off"; to public String per1= "off";
Run Code Online (Sandbox Code Playgroud)
步骤 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;
});
Run Code Online (Sandbox Code Playgroud)
您始终可以在方便时从 GET 更改为 POST,请确保将 JQuery 和 html 表单方法更改为 POST 值,并将 Playframework 路由文件更改为 POST。
希望这有效!
| 归档时间: |
|
| 查看次数: |
1872 次 |
| 最近记录: |