我正在使用 playframework 2 和 extjs4 构建网络服务。直到今天,我已经设法克服了任何障碍。但这是我一个人无法应对的事情。我跟着教程,但它没有帮助我。嗯,起初确实如此。我知道它有效,我能够向数据库(mongodb)添加一些值。我怀疑它是否重要,但是:
- 一切正常,我在数据库中添加了一些测试数据
- 我用Java写了一些其他方法
- 我
db.Category.remove()
在我的 mongo 收藏中使用过 - 服务器现在无法从表单接收任何值
我有Ext.FormPanel
2 个字段:
items: [
{
id: 'categoryName',
fieldLabel: 'Category name',
name: 'categoryName',
allowBlank: false
},{
xtype: 'textarea',
id: 'categoryDescription',
fieldLabel: 'Description',
name: 'categoryDescription',
allowBlank: true
}
]
对应Model
的类如下所示:
@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);
Play 控制台的输出:
Form(of=class kunto.models.CategoryModel, data={}, value=None, errors={})
Firebug 显示 POST 值正在正确发送:
categoryDescription test
categoryName test
我POST
在服务器端为这个特定请求定义了 conf/routes 中的请求类型。
我有两个问题:
- 该怎么做才能解决它?
- 更重要的是,为什么会这样?
编辑 正如@adis 建议的那样:
Form<CategoryModel> categoryForm = form(CategoryModel.class).bindFromRequest();
System.out.println(categoryForm);
System.out.println(categoryForm.data());
输出:
Form(of=class kunto.models.CategoryModel, data={categoryName=test, categoryDescription=test}, value=Some({"categoryName":null,"categoryDescription":null}), errors={})
{categoryName=test, categoryDescription=test}
我也查了
CategoryModel categoryModel = form(CategoryModel.class).bindFromRequest().get();
System.out.println(categoryModel);
它输出:{"categoryName":null,"categoryDescription":null}
任何人都可以解释这个吗?