从子模块访问主模板

时间:2014-11-08 09:31:31

标签: scala web playframework playframework-2.0 sbt

我有一个子模块和结构的Play2项目如下:

+ app
  + models
  + controllers
  + views
    + index.scala.html
    + main.scala.html
+ conf
+ modules
  + frontend
    + app
      + controllers
      + views
        + page.scala.html

在build.sbt中启用了模块,并且根模块和前端模块都按预期工作,甚至来自两个模块的控制器URL也可以相互反转。

但我无法从main.scala.html调用page.scala.html模板。 当我尝试像往常一样调用它时(@main(title) { ...)我收到了编译错误:not found: value main。 主模板的正确路径是什么?

UPD。我认为应该是SBT解决的问题。我的build.sbt看起来像这样

name := """myproject"""

version := "1.0-SNAPSHOT"

lazy val frontend = (project in file("modules/frontend")).enablePlugins(PlayScala)

lazy val root = (project in file(".")).enablePlugins(PlayScala).aggregate(frontend).dependsOn(frontend)

scalaVersion := "2.11.4"

libraryDependencies ++= Seq(
  "org.postgresql" % "postgresql" % "9.3-1102-jdbc41",
  jdbc,
  anorm,
  cache,
  ws
)

pipelineStages := Seq(rjs, digest, gzip)

1 个答案:

答案 0 :(得分:3)

子项目只能使用他们自己的资源或他们所依赖的项目中的资源(通过.dependsOn)。由于您的前端项目不依赖于根项目,因此无法使用其视图模板(也不能在子项目之间存在循环依赖关系。)

在这种情况下,唯一的解决方案是将视图main.scala.html模板移动到前端模块中,或者创建一个“公共”模块作为前端(以及可能的其他子项目)的基本依赖项。