0

我在视图包中写了一个简单的 index.scala.html

@import controllers.Application.AuthenticatedRequest

@(posts: Iterator[Post], message: String = "" )(implicit request: AuthenticatedRequest)
.....

错误是:

[error] F:\Kepler\blog\app\views\posts\index.scala.html:2: ')' expected but '='
found.
[error] @(posts: Iterator[Post], message:String = "")(implicit request: Authenti
catedRequest)
[error]                                         ^

我认为将消息默认值设置为“”是正确的方法。任何人都知道为什么这里需要 ')' 而不是 '='

4

2 回答 2

1

Play 将期望您在第一行声明所有模板参数。尝试这个

尝试与导入行交换

@(posts: Iterator[Post], message: String = "" )(implicit request: AuthenticatedRequest)

@import controllers.Application.AuthenticatedRequest

错误消息虽然具有误导性

于 2013-09-15T03:04:08.767 回答
1

正如@Max 提到的第一行应该包含参数,如果没有导入任何参数类型就无法识别,您应该完全限定类型名称,在您的情况下应该如下所示:

@(posts: Iterator[Post], message: String = "" )(implicit request: controller.Application.AuthenticatedRequest)

或者,如果您计划在模板参数列表中经常使用该类型,那么您可以在F:\Kepler\blog\project\Build.scala文件中指定其他导入,例如

val main = play.Project(appName, appVersion, appDependencies).settings(
  ..., // your settings here like resolvers, etc.
  templatesImport += "controllers.Application._",
  templatesImport += "models._", //etc.
  ... // further settings or the end of the list - remember: last item without coma
)

然后使用参数列表可见的导入生成模板。

于 2013-09-16T19:40:47.973 回答