Scala Play 2.4.x控制器类链接?

时间:2015-09-30 13:32:22

标签: scala playframework

我使用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>

如何修复/迁移上述授权问题?

1 个答案:

答案 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
  }
}