2
我有我的Boot.scala与启动方法在其中我做我的设置。 最后,我调用LiftRules.statelessDispatchTable并追加一个新类的实例,该实例扩展了RestHelper,它具有发球区块。如何重新启动liftweb?
在某些时候,我得到一个信号并需要更改此类,所以我需要再次调用无状态的DispatchTable来删除原来的并添加一个新的。
这样做的好方法是什么?
谢谢!
编辑:我要更新的答案,我从DAVID POLLAK问题:
你不能。一旦您的应用程序启动,就无法更改LiftRules。
但是,你加入statelessDispatchTable东西是PartialFunction [询价,盒[LiftResponse]所以你可以写一个PartialFunction,看起来像:
object RestThing1 extends RestHelper { .... }
object RestThing2 extends RestHelper {....}
object MyDynamicRestThing extends PartialFunction[Req, Box[LiftResponse]] {
def isDefinedAt(in: Req): Boolean = if (testCondition) RestThing1.isDefinedAt(in) else RestThing2.isDefinedAt(in)
def apply(in: Req): Box[LiftRequest] = if (testCondition) RestThing1.apply(in) else RestThing2.apply(in)
}
LiftRules.statelessDispatchTable.append(MyDynamicRestThing)
也许你可以使用'LiftRules.statelessDispatchTable.prepend'来为原来的RestHelper映射一个新的? – Rogach