播放框架Javascript路由器不适用于不同目录中的控制器
这个问题关注的是让Play的javascript路由器不那么冗长的方式 我的路由文件中有两个路由映射:播放框架Javascript路由器不适用于不同目录中的控制器,javascript,scala,playframework-2.0,Javascript,Scala,Playframework 2.0,这个问题关注的是让Play的javascript路由器不那么冗长的方式 我的路由文件中有两个路由映射: GET /attachments/:id/content com.application.controllers.File.getOrderContent(id:String) POST /drive com.application.controllers.myapp.Drive.createDrive() 我在sca
GET /attachments/:id/content com.application.controllers.File.getOrderContent(id:String)
POST /drive com.application.controllers.myapp.Drive.createDrive()
我在scala文件中有非详细的Javascript路由器代码:
val routeCache = {
import routes._
val jsRoutesClass = classOf[routes.javascript]
val controllers = jsRoutesClass.getFields().map(_.get(null))
controllers.flatMap { controller =>
controller.getClass().getDeclaredMethods().map { action =>
action.invoke(controller).asInstanceOf[play.core.Router.JavascriptReverseRoute]
}
}
}
def javascriptRoutes = Action { implicit request =>
Ok(Routes.javascriptRouter("jsRoutes")(routeCache:_*)).as("text/javascript")
}
当我使用时,我得到一个“未捕获的TypeError:无法读取未定义的属性'Drive'
jsRoutes.com.application.controllers.myapp.Drive.createDrive().ajax({...
鉴于
jsRoutes.com.application.controllers.File.getOrderContent().ajax({…工作fine)
有没有想过为什么路由器无法识别com.application.controllers.myapp.Drive路径?我以为routes目录中的所有路径都会包含在jsRoutes中。有一个routes对象,每个包生成一个javascript。因此,在您的情况下,您将拥有
控制器。(routes | javascript)
包含包controllers
中控制器的所有控制器路由,以及一个单独的controllers.myapp.(routes | javascript)
用于controllers.myapp
您可以在target/scala-[version]/src\u managed/main/controllers/routes.java
和target/scala-[version]/src\u managed/main/controllers/myapp/routes.java
下找到生成的源代码