0

我对玩还很陌生!2 框架,现在我无法再解决问题了。我有一个模型实体B,它具有一些属性,例如 id、name 和一个具有 @ManyToOne 关系的更复杂的属性A。A本身只有一些属性,如 id 和 name。

有点抽象但希望足够:

@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">
    }
}

每次我尝试创建新的 BI 时都会收到验证错误。创建与A关联的实体B的正确方法是什么?

4

1 回答 1

1

好,知道了。通过

@inputText(examForm("a.id"))

我能够提供对象A的 ID 。使用带有所有可能 A 的 HTML 选择元素作为选项有助于选择正确的选项!

于 2013-06-27T13:32:39.833 回答