Scala Play 2.0应用程序和使用的插件都有;“全球”;对象
我已经编写了一个Play2.0插件,它将所有传入的请求重定向到特定的控制器。我们需要这个模板开发和测试。为此,我的插件有一个全局对象,如下所示:Scala Play 2.0应用程序和使用的插件都有;“全球”;对象,scala,playframework,playframework-2.0,scala-2.10,Scala,Playframework,Playframework 2.0,Scala 2.10,我已经编写了一个Play2.0插件,它将所有传入的请求重定向到特定的控制器。我们需要这个模板开发和测试。为此,我的插件有一个全局对象,如下所示: object Global extends GlobalSettings { override def onRouteRequest(request: RequestHeader): Option[Handler] = { Play.application.plugin(classOf[MyPlugin]) match {
object Global extends GlobalSettings {
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
Play.application.plugin(classOf[MyPlugin]) match {
case Some(plugin) => plugin.enabled() match {
case true => Some(MyController.action)
}
case None => super.onRouteRequest(request)
}
}
}
这个解决方案的问题是,我不可能在主应用程序的onroutereRequest
中添加额外的逻辑
onroutereRequest
onroutereRequest
插件逻辑onroutereRequest
Torben一个插件不应该,永远,永远,永远定义一个应用程序的
全局
改为定义一个过滤器,并让应用程序在其过滤器中包括:
object MyFilter extends EssentialFilter {
def apply(next: RequestHeader => EssentialAction) = EssentialAction { request =>
Play.application.plugin(classOf[MyPlugin]) match {
case Some(plugin) if plugin.enabled() {
MyController.action(request)
case _ =>
next(request)
}
}
}
谢谢你,詹姆斯!我来换这个。“并让应用程序在其过滤器中包含该内容”,这是唯一的方法吗?如果插件已启用,是否可以从插件源动态添加过滤器?