我是Play的新手! 2框架现在我不能再帮助自己解决问题了。我有一个模型实体 B ,它有一些属性,如id,name和更复杂的属性 A ,具有@ManyToOne关系。 A 本身只有一些属性,如id和name。
有点抽象,但希望足够:
A :
@Entity
public class A extends Model {
@Id
public Long id,
@Required
public String name;
...
public static void create(Exam exam) {
exam.save();
}
}
乙:
@Entity
public class B extends Model {
@Id
public Long id,
@Required
public String name;
@Required
public A a;
...
public static void create(Exam exam) {
exam.save();
}
}
这两个模型的控制器非常简单,再次抽象:
public class BCtrl extends Controller {
static Form<Exam> bForm = Form.form(B.class);
public static Result bs() {
return ok(views.html.b.render(B.all(), bForm));
}
public static Result newB() {
Form<Exam> filledForm = bForm.bindFromRequest();
List<Lecturer> lecturers = Lecturer.all();
if (filledForm.hasErrors()) {
return badRequest(views.html.b.render(Exam.all(), filledForm));
}
else {
B.create(filledForm.get());
return redirect(routes.BCtrl.bs());
}
}
}
这是我的问题。带有表单的Scala HTML文件,用于创建新的 B 。再次抽象:
@(bs: List[B], bForm: Form[B])
@import helper._
@import helper.twitterBootstrap._
@main("B") {
<ul>
@for(b <- bs) {
<li>
@b.name
</li>
}
</ul>
@helper.form(action = routes.ExamCtrl.newExam()) {
@inputText(examForm("name"))
@inputText(examForm("a"))
<input type="submit" value="Create">
}
}
每当我尝试创建新B时,我都会收到验证错误。创建与 A 关联的实体 B 的正确方法是什么?
答案 0 :(得分:1)
好的,明白了。通过
@inputText(examForm("a.id"))
我能够提供对象 A 的ID。使用带有所有可能的A选项的HTML select元素有助于选择正确的选项!