Playframework 在play framework中创建父/子视图

Playframework 在play framework中创建父/子视图,playframework,playframework-2.0,Playframework,Playframework 2.0,我们有两个具有父子关系的模型 @实体 公共类父扩展模型{ @身份证 公共长父ID; 公共字符串父名称; @独身癖 儿童跟腱; } @实体 公共类子扩展模型{ @身份证 公共长童; 公共字符串childname; @许多酮 父母分居; } 我们需要创建一个可以同时创建和显示子对象的视图。 我们如何创建这样一个视图?有无数种方法可以实现这一点,但最基本的方法(仅限HTML)是使用给定的父级及其子级呈现页面,并使用HTML表单输入/编辑子级 首先,更改您父母对其子女的声明,从 @OneToMany

我们有两个具有父子关系的模型

@实体
公共类父扩展模型{
@身份证
公共长父ID;
公共字符串父名称;
@独身癖
儿童跟腱;
}
@实体
公共类子扩展模型{
@身份证
公共长童;
公共字符串childname;
@许多酮
父母分居;
}
我们需要创建一个可以同时创建和显示子对象的视图。
我们如何创建这样一个视图?

有无数种方法可以实现这一点,但最基本的方法(仅限HTML)是使用给定的父级及其子级呈现页面,并使用HTML表单输入/编辑子级

首先,更改您父母对其子女的声明,从

@OneToMany
Child achild;
。。。到像

@OneToMany(mappedBy="aparent", targetEntity=Child.class) 
List<Child> children;
您的模板parentTemplate.scala.html将接受该父对象,呈现适当的父字段,并在子项之间迭代,显示每个子项的详细信息:

@(parent: Parent)
<html>

...

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

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

<form ...>

</html>
@(父项:父项)
...
父:@Parent.parentName

@为了(child也许您可以阅读,然后提出更精确的问题。谢谢。这样可以很好地显示数据。我们还需要允许用户以相同的形式创建父记录和多个子记录,并在单个请求中发布数据。一旦父记录插入数据库,我们需要插入子记录w与新创建的父项具有相同的parentid。在“计算机数据库”示例中可以找到使用Play的帮助函数(包括表单绑定器和Scala帮助器)进行编辑的一个很好的入门示例。请查看同一计算机数据库exa中的视图,特别是editForm.Scala.html和Application.java中的相关控制器方法例如,我尝试在列表页中添加新计算机的表单。我做了以下更改。list.render(computer.page(page,10,sortBy,order,filter),sortBy,order,filter,computerForm)也在list.scala.html-@main{@(computerForm:form,form)中添加了@(computerForm:form[computer])[Computer])当我运行应用程序时,我看到表单中显示了表单(of=class models.Computer,data={},value=None,errors={})。使用“@(computerForm:Form[Computer])”语句,您只是在渲染“toString”form helper对象的方法。form对象不是一个完整的HTML表单,它是一个在使用表单时提供快捷方式的helper对象。再看看计算机数据库应用程序中的示例。form helper用于包装输入元素集,而不是呈现它们。
public static Result showParent(Long parentId) {
   Parent parent = Parent.find.fetch("children").where().eq("id", parentId).findUnique();
   return ok(parentTemplate.render(parent));
}
@(parent: Parent)
<html>

...

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

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

<form ...>

</html>