2012-07-11 27 views
0

我有一個應用程序,我試圖升級到Play 2.0.2(從Play 2.0.1開始)。我有這段代碼製作播放2.0.1,但已經不JavaScriptRouter在Play 2.0.2中的使用

@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 

這已經注意到了郵件列表,以及一個用戶擁有fixed the problem。我知道有一些隱含的參數需要傳遞,但我不知道如何做到這一點。我根據所提example file嘗試添加(?),這樣,我的模板,基本上改變了我的模板第一行從

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

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

但這似乎改變模板類型簽名( ?),這並不是我想要發生的事情。

有什麼建議嗎?所有與(?)都是我不完全確定的東西。我曾經在Scala中進行過一些隱式轉換,但我不確定Play在這裏對我的期望是什麼,以及我是否在製作scala或玩弄錯誤。

編輯:在the bugtracker有相應的票。

回答

1

這是你應該做的。需要注意的是在您的控制器如果您使用的是Java的控制器,你應該使用爪哇JavaScript的路由方法,你可以簡單地更新來自

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

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

我可以從View中做什麼?我正在使用Java控制器,因此做任何隱含的操作都不會在那裏工作。 – msung 2012-08-03 16:20:59

0

。 請參閱this part of the java guide

混合這兩種語言都很好,但對於路由,您應該堅持控制器的語言風格。另一種選擇是編寫一個單獨的scala控制器並調用這些方法。