在Play 2.0.2中使用javascriptRouter

Usage of javascriptRouter in Play 2.0.2

本文关键字:javascriptRouter Play      更新时间:2023-09-26

我有一个应用程序,我正试图升级到Play 2.0.2(从Play 2.0.1升级)。我有一段代码,它在Play 2.0.1上运行,但不再是

@javascriptRouter("jsRoutes")(
 routes.javascript.Contacts.invite,
 routes.javascript.Contacts.remove
)

编译器抱怨:

[error] /myprojectdir/target/scala-2.9.1/src_managed/main/views/html/Contacts/list.template.scala:75: Cannot find any HTTP Request Header here
[error] """),_display_(Seq[Any](/*41.2*/javascriptRouter("jsRoutes")(
[error]                                                             ^
[error] one error found
[error] {file:/myprojectdir/}projectname/compile:compile: Compilation failed
[error] Total time: 9 s, completed 11.07.2012 11:38:51

邮件列表中已经注意到了这一点,一位用户已经解决了这个问题。我知道有一些隐含的参数需要传递,但我不知道如何做到这一点。我试着根据上面提到的示例文件将(?)添加到我的模板中,基本上是从的第一行更改了我的模板

@(currentUser: User, inviteForm: Form[controllers.Contacts.InviteForm])

@(currentUser: User, inviteForm: Form[controllers.Contacts.InviteForm])(implicit request: RequestHeader)

但这似乎改变了模板(?)的类型签名,这不是我想要的。

有什么建议吗?关于(?)的一切我都不完全确定。我以前在Scala中处理过一些隐式转换,但我不确定Play在这里对我的期望是什么,也不确定我是否犯了Scala或Play错误。

编辑:在错误跟踪器中有一个相应的票证。

这是你应该做的。注意,在你的控制器中,你可以简单地从更新

def foo() = Action {
    ...
    Ok(views.html.contact.list())
}

def foo() = Action { implicit request =>
    ...
    Ok(views.html.contact.list())
}

如果您使用的是Java控制器,则应该使用Java javascript路由方法。请参阅java指南的这一部分

混合使用这两种语言是可以的,但对于路由,您应该坚持控制器的语言风格。另一种选择是编写一个单独的scala控制器并调用这些方法。

相关文章:
  • 没有找到相关文章