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