播放异常:'{'预期,但'import'找到



它向我抛出了第 3 行的异常。问题是我只有这些行:

package controllers
import play.api._
import play.api.mvc._
import views._
import models._
object Application extends Controller {
  def index = Ok(views.html.index("grrr", "blabla"))
}

编辑:索引.html

@import helper._
@main("Todo") {
    <h1>Hello World</h1>
}

我在 Windows xp 上使用播放 2.2.0(带有 sbt)

我认为问题出在 IDE 中的行分隔符上。我曾经将LF(Linux)更改为CR(Mac)(错误地,不知道这对编译有影响)并努力解决同样的问题。更改为默认服务器后,一切恢复正常。

Play! 模板的第一行是为签名定义保留的。当您创建新的 Play 应用程序时,Welcome屏幕中也会提到这一点。

除了为什么导入helper._的问题之外,我会执行以下操作:

  1. 将第一行设为空,或者至少没有导入语句。
  2. 运行play clean
  3. 在此之后它应该可以工作,我希望:-)

更多信息:

  • 播放框架模板自动导入models._等
  • https://github.com/playframework/playframework/blob/1acfd1dc4264e7589876fb1f4ebf37e584ab8bc6/framework/src/play/src/main/scala/views/play20/welcome.scala.html#L81
  • 如果你知道一点斯卡拉(我还不知道):https://github.com/playframework/playframework/blob/9206bea8c9c88acdc6786ebb2554f081396e8f6a/framework/src/templates-compiler/src/main/scala/play/templates/ScalaTemplateCompiler.scala

编辑: 2013.09.24 at 22:15

您将两个参数传递给视图模板 ( views.html.index("grrr", "blabla") ),(视图编译为函数)。因此,在您的函数("索引视图")中,第一行应该定义函数签名(参数)。我认为您应该将模板编写为:

@(firstString : String, secondString : String)
@import helper._
@main("Todo") {
    <h1>Hello World</h1>
}