我正在使用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,就不可能直接实例化它。
我该如何解决/迁移上面的授权问题?
您可能可以利用反向路由策略
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
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句