我以这种方式设置了应用程序加载器:
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
所以现在当我编译项目时,我得到了这个错误:
所以我不确定如何解决这个问题,有人知道我该如何使加载程序与这种路由结构一起工作?
最佳答案
@marcospereira的回答是正确的,但也许代码有误。
该错误是由于routes
文件引用了v1.routes
导致的-将其编译为参数类型为Routes
的v1.Routes
类。
您可以在target/scala-2.12/routes/main/router
和/v1
中查看生成的代码。
因此,要连接Router
,您需要一个v1.Router
实例。要创建v1.Route
r实例,您首先需要连接它。
这是解决上述示例的一种方法:
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]
}
关于scala - 如何设置 Play Framework ApplicationLoader和Macwire以使用自定义路由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44912215/