Extjs4 服务器播放框架和extjs未收到POST值
我正在用PlayFramework2和extjs4构建一个Web服务。直到今天,我都设法克服了任何障碍。但这是我无法单独处理的事情。我跟着,但这对我没有帮助。嗯,一开始是这样的。我知道它是有效的,我能够向数据库(mongodb)添加一些值。我怀疑这是否重要,但:Extjs4 服务器播放框架和extjs未收到POST值,extjs4,playframework-2.0,Extjs4,Playframework 2.0,我正在用PlayFramework2和extjs4构建一个Web服务。直到今天,我都设法克服了任何障碍。但这是我无法单独处理的事情。我跟着,但这对我没有帮助。嗯,一开始是这样的。我知道它是有效的,我能够向数据库(mongodb)添加一些值。我怀疑这是否重要,但: 一切正常,我在数据库中添加了一些测试数据 我用Java编写了一些其他方法 我在mongo集合中使用了db.Category.remove() 服务器现在无法从窗体接收任何值 我有一个带有两个字段的Ext.FormPanel: ite
- 一切正常,我在数据库中添加了一些测试数据
- 我用Java编写了一些其他方法
- 我在mongo集合中使用了
db.Category.remove()
- 服务器现在无法从窗体接收任何值
Ext.FormPanel
:
items: [
{
id: 'categoryName',
fieldLabel: 'Category name',
name: 'categoryName',
allowBlank: false
},{
xtype: 'textarea',
id: 'categoryDescription',
fieldLabel: 'Description',
name: 'categoryDescription',
allowBlank: true
}
]
相应的模型
类如下所示:
@MongoCollection(name = "Category")
public class CategoryModel{
private String categoryName;
private String categoryDescription;
@JsonProperty("categoryName")
public String getName() {
return categoryName;
}
@JsonProperty("categoryName")
public void setName(String name) {
this.categoryName = name;
}
@JsonProperty("categoryDescription")
public String getDescription() {
return categoryDescription;
}
@JsonProperty("categoryDescription")
public void setDescription(String description) {
this.categoryDescription = description;
}
public String toString(){
ObjectMapper mapper = new ObjectMapper();
String json = null;
try {
json = mapper.writeValueAsString(this);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return json;
}
}
最后,这里是我想要接收值的地方:
Form<CategoryModel> categoryForm = form(CategoryModel.class);
System.out.println(categoryForm);
我在服务器端为这个特定请求定义了conf/routes中的POST
请求类型
我有两个问题:
- 如何修复它
- 更重要的是,为什么会发生这种情况
Form<CategoryModel> categoryForm = form(CategoryModel.class).bindFromRequest();
System.out.println(categoryForm);
System.out.println(categoryForm.data());
我也查过了
CategoryModel categoryModel = form(CategoryModel.class).bindFromRequest().get();
System.out.println(categoryModel);
它输出:{“categoryName”:null,“categoryDescription”:null}
任何人都可以解释这一点?如评论所述,您必须通过以下方式将请求绑定到模型:
Form<CategoryModel> categoryForm = form(CategoryModel.class).bindFromRequest();
这将为您提供一个模型实例,其中填充了来自post REQUEST的数据。此方法通常如下所示:
Form<Task> taskForm = form(Task.class).bindFromRequest();
if (taskForm.hasErrors()) { // check for constraints
Logger.info("Error:" + taskForm);
return badRequest(views.html.task.create.render(taskForm));
}
// here get the model instance
Task newTask = taskForm.get();
formtaskform=Form(Task.class).bindFromRequest();
如果(taskForm.hasErrors()){//检查约束
Logger.info(“错误:+taskForm”);
返回badRequest(views.html.task.create.render(taskForm));
}
//这里获取模型实例
Task newTask=taskForm.get();
希望这能有所帮助。如前所述,您必须通过以下方式将请求绑定到模型:
Form<CategoryModel> categoryForm = form(CategoryModel.class).bindFromRequest();
这将为您提供一个模型实例,其中填充了来自post REQUEST的数据。此方法通常如下所示:
Form<Task> taskForm = form(Task.class).bindFromRequest();
if (taskForm.hasErrors()) { // check for constraints
Logger.info("Error:" + taskForm);
return badRequest(views.html.task.create.render(taskForm));
}
// here get the model instance
Task newTask = taskForm.get();
formtaskform=Form(Task.class).bindFromRequest();
如果(taskForm.hasErrors()){//检查约束
Logger.info(“错误:+taskForm”);
返回badRequest(views.html.task.create.render(taskForm));
}
//这里获取模型实例
Task newTask=taskForm.get();
希望这有帮助。只是一个猜测,但是您不应该注释属性而不是getter吗
@JsonProperty("description")
public void setDescription(String description) {
this.categoryDescription = description;
}
应该是
@JsonProperty("description")
private String description;
您的上述代码中也存在差异。。描述的getter绑定到“categoryDescription”,而setter绑定到“description”只是一个猜测,但是您不应该注释属性而不是getter吗
@JsonProperty("description")
public void setDescription(String description) {
this.categoryDescription = description;
}
应该是
@JsonProperty("description")
private String description;
您的上述代码中也存在差异。。description的getter绑定到“categoryDescription”,setter绑定到“description”您能试试吗:Form categoryForm=Form(CategoryModel.class).bindFromRequest()@adis多亏了你的评论,我可以看到进展:D我用一个小更新编辑了我的问题。难道你的toString()方法错了吗?打印对象时,java总是调用toString()方法,对吗?你能删除你的toString()方法而不是打印,用eclipse调试它吗?你能试试吗:Form categoryForm=Form(CategoryModel.class).bindFromRequest()@adis多亏了你的评论,我可以看到进展:D我用一个小更新编辑了我的问题。难道你的toString()方法错了吗?打印对象时,java总是调用toString()方法,对吗?你能删除你的toString()方法而不是打印,用eclipse调试它吗?关于
@Required
:。几天后我会尝试一下你的解决方案,谢谢你的帮助!只有在没有验证错误的情况下,才会绑定这些值。因此,如果电子邮件是空的,您将得到一个验证错误,因此您将无法使用get()
方法。这不是一个bug,只是它的工作方式。谢谢你的帮助,但这并不能解决我的问题-效果是一样的。我不确定发生了什么,但问题已经解决了,谢谢你的帮助!关于@必填项
:。几天后我会尝试一下你的解决方案,谢谢你的帮助!只有在没有验证错误的情况下,才会绑定这些值。因此,如果电子邮件是空的,您将得到一个验证错误,因此您将无法使用get()
方法。这不是一个bug,只是它的工作方式。谢谢你的帮助,但这并不能解决我的问题-效果是一样的。我不确定发生了什么,但问题已经解决了,谢谢你的帮助!感谢您的回答,注释属性而不是setter/getter并没有解决我的问题<代码>说明注释是一个错误,我在代码前面看到了它,感谢您的注意-它仍然不是我问题的根源。感谢您的回答,注释属性而不是setter/getter并没有解决我的问题<代码>说明注释是一个错误,我在代码前面看到了它,感谢您的注意-它仍然不是我问题的根源。