gpt4 book ai didi

scala - 如何设置 Play Framework ApplicationLoader 和 Macwire 以使用自定义路由?

转载 作者:行者123 更新时间:2023-12-04 12:17:06 26 4
gpt4 key购买 nike

我以这种方式设置了应用程序加载器:

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

所以现在当我编译项目时,我收到此错误:

Error: Cannot find a value of type: [v1.Routes] wire[Routes]



所以我不知道如何解决这个问题,有人知道我怎样才能让装载机与这种路由结构一起工作?

最佳答案

@marcospereira 的答案是正确的,但可能代码有点错误。

错误是由于 routes文件引用 v1.routes - 这被编译为 Routes具有 v1.Routes 类型参数的类.

您可以在 target/scala-2.12/routes/main/router 中看到生成的代码和 /v1 .

因此要接线 Router ,您需要一个 v1.Router实例。创建一个 v1.Route例如,您首先需要连接它。

这是修复上述示例的一种方法:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com