我以这种方式设置了应用程序加载程序:
class MyProjectApplicationLoader extends ApplicationLoader {
def load(context: Context): Application = new ApplicationComponents(context).application
}
class ApplicationComponents(context: Context) extends BuiltInComponentsFromContext(context)
with QAControllerModule
with play.filters.HttpFiltersComponents {
// set up logger
LoggerConfigurator(context.environment.classLoader).foreach {
_.configure(context.environment, context.initialConfiguration, Map.empty)
}
lazy val router: Router = {
// add the prefix string in local scope for the Routes constructor
val prefix: String = "/"
wire[Routes]
}
}但我的路线是定制的,所以看起来:
routes文件:
-> /myApi/v1 v1.Routes
-> /MyHealthcheck HealthCheck.Routes我的v1.Routes文件:
GET /getData controllers.MyController.getData所以,现在当我编译这个项目时,我得到了这个错误:
错误:找不到类型: v1.Routes wireRoutes的值
所以我不知道如何解决这个问题,有人知道我怎样才能让装载机和这个路线的结构一起工作吗?
发布于 2017-07-14 17:44:10
@marcospereira的答案是正确的,但代码可能稍有错误。
错误是由于routes文件引用了v1.routes --这是编译到具有v1.Routes类型参数的Routes类的。
您可以在target/scala-2.12/routes/main/router和/v1中看到生成的代码。
因此,要连接Router,需要一个v1.Router实例。要创建一个v1.Router实例,首先需要将它连接起来。
下面是修复上述示例的一种方法:
lazy val router: Router = {
// add the prefix string in local scope for the Routes constructor
val prefix: String = "/"
val v1Routes = wire[v1.Routes]
wire[Routes]
}发布于 2017-07-05 19:35:49
您还需要连接v1.Routes。在这里查看如何手动完成:
这应该如您所期望的那样起作用:
lazy val v1Routes = wire[v1.Routes]
lazy val wiredRouter = wire[Routes]
lazy val router = wiredRouter.withPrefix("/my-prefix")ps.:没有在真正的项目中测试。
https://stackoverflow.com/questions/44912215
复制相似问题