我使用play-slick-3.0项目作为迁移我所拥有的传统Play项目的基础。遗留controller.Application
曾经是一个对象,现在是一个类,同样所有其他控制器实现都是对象,现在是类。遗留项目正在做"控制器链接"即申请代表到其他管制员:
class Application extends Controller {
...
def uploadDo(context: String) = { implicit request ⇒
// a lot of boilerplate code common to all contexts
context match {
case "aum" ⇒ AumController.uploadDo(storedFile)
case "portfolio" ⇒ PortfolioController.uploadDo(storedFile)
case "price" ⇒ PriceController.uploadDo(storedFile)
}
// more boilerplate code common to all contexts
}
}
问题是我不能再进行那种委托了,因为AumController是一个类而不再是一个对象。我也不能定义一个关联的对象,因为这些类被实例化,并且框架注入了依赖项...例如,在同一个项目中查看Application.scala,不可能直接实例化它。 / p>
如何修复/迁移上述授权问题?
答案 0 :(得分:1)
您可以使用反向路由策略
class Application extends Controller {
...
def uploadDo(context: String) = { implicit request ⇒
// a lot of boilerplate code common to all contexts
context match {
case "aum" ⇒ routes.AumController.uploadDo(storedFile)
case "portfolio" ⇒ routes.PortfolioController.uploadDo(storedFile)
case "price" ⇒ routesPriceController.uploadDo(storedFile)
}
// more boilerplate code common to all contexts
}
}