我正在使用Play框架和Sqlite。
我创建了一个模型 - Bar
(app / models / Bar.java的内容)
package models;
import javax.persistence.Entity;
import javax.persistence.Id;
import play.db.ebean.Model;
@Entity
public class Bar extends Model{
@Id
public String id;
public String name;
public Bar(String id, String name){
this.id = id;
this.name = name;
}
public Bar(){}
public static Finder<String, Bar> find = new Finder(String.class, Bar.class);
}
我正试图通过表单提交添加栏:
public static Result addBar(){
Form<Bar> form = Form.form(Bar.class).bindFromRequest();
Bar bar = form.get();
bar.save();
return redirect(routes.Application.index());
}
但是,bar中的id和name都是null。 请帮我理解为什么会这样? 感谢。
答案 0 :(得分:0)
为将来的用户回答这个问题:
如果在application.conf
文件中,Ebean配置为ebean.default="models.*"
,则包含模型的包必须为models
而不是model
。
关于另一个问题(form.get()
为null),在将表单与请求绑定后,您需要确保它没有错误:
public static Result addBar() {
Form<Bar> form = Form.form(Bar.class).bindFromRequest();
if (form.hasErrors()) {
// Do something with the errors (i.e. : redirect with flash message containing the main error)
}
Bar bar = form.get();
bar.save();
return redirect(routes.Application.index());
}