在子文件夹中找不到视图

我刚开始使用Play2.0框架,我正在尝试在我的home/index模板中使用主模板。 我遇到的问题是,当它在Shared文件夹中找不到“main”时,如果我将它取出并放入Views根目录,那么它可以正常工作。

所以我想知道如何从index.scala.html引用index.scala.html

我的文件夹结构如下:

  • 查看
      • index.scala.html
    • 共享
      • main.scala.html

我在index.scala.html中的代码是:

 @head = { } @content = { Home Screen!! } ERROR: @main(title = "Home",head, content) 

我得到的错误是:

 not found: value main. 

一旦你进入视图的子文件夹,这就像“伪包”称为“html”。 我不完全确定它是如何工作的但是试试这个:

 @views.html.Shared.main 

您可以使用:

 @Shared.main(title = "Home",head, content) 

出于安全性和性能原因,Play将模板编译为Scala函数并将其存储在托管文件夹/target/scala-2.9.1/src_managed/main/views ,以便您可以预览它以找到正确的路径。

对于使用pattern保存的视图文件,规则很容易:

  • /app/views/viewName.scala.ext (其中ext可以是htmlxmltxt )Play会将视图编译为: view.ext.viewName
  • 对于/app/views/SomeSub/OtherSub/viewName.scala.ext ,它将是: view.ext.SomeSub.OtherSub.viewName

所以:

 /app/views/general.scala.html = views.html.general /app/views/Main/index.scala.html = views.html.Main.index /app/views/Api/usersList.scala.xml = views.xml.Api.usersList /app/views/Email/English/body.scala.txt = views.txt.Email.English.body 

等等…

/app/views/tags包有一些自动导入视图的情况,所以你可以在任何视图中使用/app/views/tags/myTag.scala.html @tags.myTag(args)语法。