0

I'm trying to call a main layout from a view (just like in docs ) but I get the error:

 [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

Here is the code I'm trying to use: CONTROLLER

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

LIST VIEW

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

What's wrong with the code?

I tried also with (content: Html) in _layout and the html code in list.scala.html but the compiler stops always after @( with not found: value title

If I remove the parameters in the layout and call it with @views.html.shared._layout() it compiles correctly.

Brian Tompsett - 汤莱恩
  • 5,195
  • 62
  • 50
  • 120
Marco
  • 1
  • 3
  • Provided code works perfectly fine. Have you tried cleaning and restarting your app? – Daniel Olszewski Jan 29 '15 at 18:24
  • Yes, cleaned and restarted but no luck. I've updated the post with build.sbt and plugins.sbt – Marco Jan 30 '15 at 09:06
  • `@views.html.shared._layout( title = "User" )` – sarveshseri Jan 30 '15 at 09:26
  • Nothing also with 'title =', after clean and compile same error: `[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` – Marco Jan 30 '15 at 10:03

1 Answers1

0

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

The OP wrote:

Starting from scratch I have now a project able to compile... everything is identical, I copied one by one the files in order to find out the issue but no problem so far. With winmerge I took a look at the folders and I can see that, in target\scala-2.11\twirl....\shared_layout.template.html the working one is:

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

and the not working one is:

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

I removed the _layout file from the original project, copied the new one (identical from winmerge point of view) and now it works.

Community
  • 1
  • 1
Brian Tompsett - 汤莱恩
  • 5,195
  • 62
  • 50
  • 120