Templates 在play 2.0 scala中包含scala.html文件

Templates 在play 2.0 scala中包含scala.html文件,templates,scala,playframework-2.0,Templates,Scala,Playframework 2.0,我正在尝试用scala学习Play2.0,但我不太了解Play2.0的模板系统是如何工作的。我以前使用过Play1.2,我正在寻找一个与#{include'views/blah.html'/}相当的版本。我基本上想要创建一个在所有页面上呈现的导航栏 基本上在main.scala.html中 @(title: String)(navbar: Html)(content: Html) <!DOCTYPE html> <html> <head> &l

我正在尝试用scala学习Play2.0,但我不太了解Play2.0的模板系统是如何工作的。我以前使用过Play1.2,我正在寻找一个与#{include'views/blah.html'/}相当的版本。我基本上想要创建一个在所有页面上呈现的导航栏

基本上在main.scala.html中

@(title: String)(navbar: Html)(content: Html)

<!DOCTYPE html>

<html>
  <head>
    <title>@title</title>
    <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
    <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
    <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
  </head>
  <header>
    This is my header
  </header>
    <section class="navbar">@navbar</section>
    <section class="content">@content</section>
  <footer>
    This is my footer
  </footer>
@(标题:字符串)(导航栏:Html)(内容:Html)
@头衔
这是我的头球
@导航栏
@内容
这是我的页脚

在我的index.scala.html中:

@navbar = {  
<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
}
@main("Home")(navbar){
  content
}
@(tasks: List[Task], taskForm: Form[String]) 
@import helper._
@main("Home") {
<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
} {
  task code
}
@navbar={
指数
} @主(“主”)(导航栏){ 内容 }
在task.scala.html中:

@navbar = {  
<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
}
@main("Home")(navbar){
  content
}
@(tasks: List[Task], taskForm: Form[String]) 
@import helper._
@main("Home") {
<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
} {
  task code
}
@(任务:列表[任务],任务形式:形式[字符串])
@导入助手_
@主(“家”){
指数
} { 任务代码 }
现在要包含这个导航条,我似乎必须在每一页中重复这个,我必须在每一页中硬编码这个导航条。有没有一种方法可以做到这一点,而不必在每一页中写入整个导航栏

我还尝试创建了一个navbar.scala.html文件,其中包含

<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
索引

然后在视图下保存,然后使用
@import views.navbar导入,但是我得到一个错误,声明“navbar不是视图的成员”。我在Eclipse Java EE IDE indigo中写这篇文章,如果有帮助的话。

不要导入它,只需调用它:

@navbar()

要将任何其他视图样板包含到其他视图样板中, 您可以使用以下命令简单地调用它:
@views.html.[location].[location].[location]()

其中[位置]只是其路径的一个细分

例如:

@views.html.users.interface()
如果不带任何参数,请确保将“()”放在语句末尾的括号中。如果没有“()”,您将收到如下错误消息: “BaseScalaTemplate(play.api.templates…)

如果模板有参数,请确保在调用时包含这些参数,如下所示:

@views.html.users.interface( "name" )

当我使用“@navbar”时,它会显示以下内容:BaseScalaTemplate(play.api.templates.HtmlFormat$@5272b4dc),而不是实际的navbar.scala.html