我是Play和Scala的新手。整体而言,这个教程非常好,但是当我进入模板时,我遇到了一个非常神秘的错误消息。我正在运行helloworld
示例,并且它在模板的第一行上出现以下错误而失败:
`标识符'预期但''找到
这是它失败的模板:
@(name: String, repeat: Int, color: Option[String])
@main("Here is the result:") {
<ul style="color: @color.getOrElse("inherited")">
@for(_ <- 1 to repeat) {
<li>Hello @name!</li>
}
</ul>
<p class="buttons">
<a href="@routes.Application.index">Back to the form</a>
</p>
}
我正在使用Scala 2.1和Play 2.1。
编辑 - 我没有更改示例代码中的任何内容。我根据评论的建议在下面添加了更多信息。谢谢你的帮助。
主要观点如下:
@(title: String)(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>@title</title>
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
<link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
<script src="@routes.Assets.at("javascripts/jquery-1.6.4.min.js")" type="text/javascript"></script>
</head>
<body>
<header>
<a href="@routes.Application.index">@title</a>
</header>
<section>
@content
</section>
</body>
</html>
控制台例外:
! @6dhjgk32b - Internal server error, for (GET) [/] ->
sbt.PlayExceptions$TemplateCompilationException: Compilation error[`identifier' expected but ` ' found]
at sbt.PlayCommands$$anonfun$43.apply(PlayCommands.scala:433) ~[na:na]
at sbt.PlayCommands$$anonfun$43.apply(PlayCommands.scala:409) ~[na:na]
at sbt.Scoped$$anonfun$hf5$1.apply(Structure.scala:581) ~[na:na]
at sbt.Scoped$$anonfun$hf5$1.apply(Structure.scala:581) ~[na:na]
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49) ~[scala-library.jar:na]
at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311) ~[na:na]
[warn] play - No application found at invoker init
路由
GET / controllers.Application.index
Application.scala
/**
* Describes the hello form.
*/
val helloForm = Form(
tuple(
"name" -> nonEmptyText,
"repeat" -> number(min = 1, max = 100),
"color" -> optional(text)
)
)
// -- Actions
/**
* Home page
*/
def index = Action {
Ok(html.index(helloForm))
}
编辑2:
当我拿出所有模板代码(使用@)并且只有一个文本模板(例如<h1>Hello</h1>
)时,我看到没有问题。一旦我使用@ event添加模板代码,如果它是一个未使用的代码块,如下所示我得到了该错误。我在Windows 7上使用eclipse + Scala和Play插件。
@sidebar = {
<h1>Sidebar</h1>
}