在play框架中创建父/子视图

时间:2014-08-22 14:56:44

标签: playframework playframework-2.0

我们有两个有亲子关系的模型。

@Entity
public class Parent extends Model {
    @Id
    public Long parentid;
    public String parentname;
    @OneToMany
    Child achild;
}

@Entity
public class Child extends Model {
    @Id
    public Long childid;
    public String childname;
    @ManyToOne
    Parent aparent;
}

我们需要创建一个单独的视图,我们可以创建和显示子视图。 我们如何创建这样的观点?

1 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一点,但是裸骨(仅限HTML)将呈现具有给定父级及其子级的页面,并使用HTML表单输入/编辑子级。

首先,从......

更改您孩子的父母声明
@OneToMany
Child achild;

......类似......

@OneToMany(mappedBy="aparent", targetEntity=Child.class) 
List<Child> children;

假设您正在使用eBean,请添加一个查找程序:

static Model.Finder<Long, Parent> find = new Model.Finder<>(Long.class, Parent.class); 

您的控制器将查找父级及其子级,并将父级移交给模板:

public static Result showParent(Long parentId) {
   Parent parent = Parent.find.fetch("children").where().eq("id", parentId).findUnique();
   return ok(parentTemplate.render(parent));
}

您的模板parentTemplate.scala.html将接受该Parent对象,呈现相应的父字段,并遍历子项,并显示每个子项的详细信息:

@(parent: Parent)
<html>

...

<h1>Parent: @parent.parentName</h1>

@for(child <- parent.children) {
    <h2>@child.childName</h2>
}

<form ...>

</html>

同样,有很多方法可以实现它,但这是开始使用Play的Scala模板引擎的最简单方法。