播放框架 - 使用参数从另一个视图调用视图

时间:2015-01-29 15:44:06

标签: playframework-2.0 scala-2.10 twirl

我试图从视图中调用主要布局(就像在docs中一样),但是我收到错误:

 [error] C:\Users\Marco\Documents\Devel\Java\DroversWeb\app\views\device\list.sca
la.html:1: too many arguments for method apply: ()play.twirl.api.HtmlFormat.Appe
ndable in object _layout
[error] @views.html.shared._layout("User")
[error]                           ^
[error] C:\Users\Marco\Documents\Devel\Java\DroversWeb\app\views\shared\_layout.
scala.html:1: not found: value title
[error] ?@(title: String)
[error]    ^
[error] two errors found
[error] (compile:compile) Compilation failed
[error] Total time: 34 s, completed 29-gen-2015 16.27.59

以下是我尝试使用的代码: 的 CONTROLLER

public static Result list() {
        return ok(views.html.device.list.render());
    }

列表视图

@views.html.shared._layout("User")

** _LAYOUT **

@(title: String)
<!DOCTYPE html>
<html lang="en">
<head>
....
</html>

** BUILD.SBT

...

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.5"

libraryDependencies ++= Seq(
  "org.webjars" %% "webjars-play" % "2.3.0-2",
  "org.webjars" % "bootstrap" % "3.3.1",
  "org.webjars" % "jquery" % "2.1.1",
  "org.webjars" % "pace" % "1.0.2",
  "org.webjars" % "font-awesome" % "4.2.0",
  "org.webjars" % "jquery-ui" % "1.11.2",
  javaJdbc,
  javaEbean,
  cache,
  javaWs,
  "org.mongodb" % "mongo-java-driver" % "2.12.5",
  "org.mongodb.morphia" % "morphia" % "0.109",
  "org.mongodb.morphia" % "morphia-logging-slf4j" % "0.109",
  "org.mongodb.morphia" % "morphia-validation" % "0.109",
  "be.objectify"  %% "deadbolt-java"     % "2.3.2",
  "com.feth"      %% "play-authenticate" % "0.6.8"
)

** PLUGINS.SBT **

resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.7")
// web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.0.0")

代码有什么问题?

我还尝试使用_layout中的(content: Html)和list.scala.html中的html代码,但编译器始终在@( not found: value title之后停止

如果删除布局中的参数并使用@views.html.shared._layout()调用它,则会正确编译。

1 个答案:

答案 0 :(得分:0)

Solved by a question edit - converted to a community wiki answer.

OP写道:

  

从头开始我现在有一个能够编译的项目...一切都是相同的,我逐个复制文件以找出问题但到目前为止没问题。用winmerge我看看文件夹,我可以看到,在目标\ scala-2.11 \ twirl .... \ shared_layout.template.html中,工作的是:

/**/
object _layout extends BaseScalaTemplate[play.twirl.api.HtmlFormat.Appendable,Format[play.twirl.api.HtmlFormat.Appendable]](play.twirl.api.HtmlFormat) with play.twirl.api.Template0[play.twirl.api.HtmlFormat.Appendable] {

  /**/
  def apply():play.twirl.api.HtmlFormat.Appendable = {
      _display_ {
     

并且不起作用的是:

{{1}}
     

我从原始项目中删除了_layout文件,复制了新文件(从winmerge的角度来看相同),现在它可以正常工作。