我在Scala中使用Play框架.我遇到一个奇怪的错误,无法解决该怎么办.错误消息是:
I'm using Play framework with Scala. I'm facing a weird error and can't figure out what's the solution. The error message is:
value Track不是对象controllers.routes.javascript
value Track is not a member of object controllers.routes.javascript
<script type="text/javascript" src="@routes.TrackController.javascriptRoutes"></script> @helper.javascriptRouter("jsRoutes")( routes.javascript.Track ) def Track(id:Long)= Action {implicit request => Ok(views.html.track( new TrackData(TrackClient.getTrack(id)))) } def javascriptRoutes = Action { implicit request => Ok( Routes.javascriptRouter("jsRoutes") (routes.javascript.TrackController.Track)).as("text/javascript") } #JavaScriptRouting GET /track/:id @controllers.TrackController.Track(id: Long) GET /javascriptRoutes @controllers.TrackController.javascriptRoutes
新错误为:
1@(message: String) 2 3@main("Welcome to Play 2.1") { 4 5 @play20.welcome(message) 6 7}
index.scala.html第3行.在此处找不到任何HTTP请求标头
index.scala.html at line 3. Cannot find any HTTP Request Header here
它显示index.scala,但我从未更改过.
It says index.scala but I have never changed it.
推荐答案您的JavaScript路由定义为:
Your javascript route is defined as:
GET /javascriptRoutes controllers.TrackController.javascriptRoutes编辑:在routes.javascript下,播放对javascript使用了特殊的反向路由.
Edit: play uses a special reverse route for javascript, under routes.javascript.
因此您的反向控制器将位于controllers.routes.javascript.TrackController.Track:
so your reverse controller will be at controllers.routes.javascript.TrackController.Track:
@helper.javascriptRouter("jsRoutes")( routes.javascript.TrackController.Track )您还需要在模板中提供隐式RequestHeader.因此,请在模板的开头添加:
You also need to make an implicit RequestHeader available in your template. So add at the beginning of your template:
@(implicit request: RequestHeader)或者如果您已经具有模板参数:
Or if you already have template parameters:
@(<your parameters>)(implicit request: RequestHeader)并确保它在控制器的Action中可用:
And make sure it is available in your controller's Action:
def myController = Action { implicit request => // <-- request is a RequestHeader // ... Ok(views.html.myView) }如果从另一个视图(比如说index)中调用了该视图(我们称它为main),那么index同样也需要一个隐式的RequestHeader参数,以便能够将其向下传递到main.
If that view (let's call it main) is called from within another view (let's say index), then index also needs an implicit RequestHeader parameter as well, to be able to pass it down to main.
更多推荐
Scala JavaScript路由播放框架
发布评论