scala – 更不用说产生Play 2的JavaScript路由器的方式
发布时间:2020-12-16 19:05:12 所属栏目:安全 来源:网络整理
导读:目前我以一种比较详细的方式定义了我的应用程序的 JavaScript路由器 def javascriptRoutes = Action { implicit request = import routes.javascript._ Ok(Routes.javascriptRouter("jsRoutes")( Login.method1,Login.Method2,OtherController.method1,Other
目前我以一种比较详细的方式定义了我的应用程序的
JavaScript路由器
def javascriptRoutes = Action { implicit request => import routes.javascript._ Ok(Routes.javascriptRouter("jsRoutes")( Login.method1,Login.Method2,OtherController.method1,OtherController.method2,//[...] )).as("text/javascript") } 我真正想做的是创建一个javascriptRouter与路由文件中的所有路由,所以我不必手动更新javascriptRoutes定义,每次添加一个新的控制器方法. 有没有办法完成这个任务,或者甚至有一点点简单的定义javascriptRouter的方式? 解决方法
你可以通过这样反思来做:
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") } 这是从在target / scala-2.x.x / src_managed中找到的生成的源文件导出的.您可以添加自己的源代码并自行解析路由文件,但我发现通过反射更容易做到. 你可能想要做的另外一件事是过滤掉你不想要的方法,因为这将给你所有的路由(包括javascriptRouter本身). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |