【问题标题】:Play framework - calling view from another view with parameters播放框架 - 从带有参数的另一个视图调用视图
【发布时间】:2015-01-29 15:44:05
【问题描述】:

我正在尝试从视图调用主布局(就像在 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

这是我尝试使用的代码: 控制器

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"
)

** 插件.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() 调用它,它将正确编译。

【问题讨论】:

  • 提供的代码运行良好。您是否尝试过清理并重新启动您的应用程序?
  • 是的,已清理并重新启动,但没有运气。我已经用 build.sbt 和 plugins.sbt 更新了帖子
  • @views.html.shared._layout( title = "User" )
  • 没有'title =',清理和编译后同样的错误:[error] C:\Users\Marco\Documents\Devel\Java\DroversWeb\app\views\device\list.sca la.html:4: too many arguments for method apply: ()play.twirl.api.HtmlFormat.Appe ndable in object _layout [error] @views.html.shared._layout( title = "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

标签: playframework-2.0 scala-2.10 twirl


【解决方案1】:

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

OP 写道:

从头开始我现在有一个可以编译的项目......一切都是一样的,我一个一个地复制了文件以找出问题,但到目前为止没有问题。使用 winmerge,我查看了文件夹,我可以看到,在 target\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.Template1[String,play.twirl.api.HtmlFormat.Appendable] {

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

不工作的是:

/**/
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_ {

我从原始项目中删除了 _layout 文件,复制了新的文件(与 winmerge 的观点相同),现在它可以工作了。

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    相关资源
    最近更新 更多