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

Dar*_*rbs 6 templates scala playframework-2.0

我正在尝试用scala学习Play 2.0,但我不认为我完全理解play 2.0的模板系统是如何工作的.我之前使用过Play 1.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>
Run Code Online (Sandbox Code Playgroud)

在我的index.scala.html中:

@navbar = {  
<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
}
@main("Home")(navbar){
  content
}
Run Code Online (Sandbox Code Playgroud)

在task.scala.html中:

@(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
}
Run Code Online (Sandbox Code Playgroud)

现在要包含这个导航栏,我似乎必须在每个页面重复此操作,这样我就必须将此导航栏硬编码到每个页面中.有没有办法在没有在每个页面中编写整个导航栏的情况下执行此操作?

我还尝试创建一个包含的navbar.scala.html文件

<h1>Index</h1>
<ul>
    <li> 
        <a href=@routes.Application.tasks>Tasks</a>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

并保存在视图下/然后导入使用@import views.navbar但然后我得到一个错误,说明'导航栏不是视图的成员'.如果有帮助,我在Eclipse Java EE IDE indigo中写这个.

Jul*_*Foy 7

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

@navbar()
Run Code Online (Sandbox Code Playgroud)