2014-09-03 57 views
0

this article的使用篩選器部分介紹瞭如何在Play Framework全局對象上實現篩選器。使用篩選器實現新特性

object Global extends WithFilter(AccessLog) 

object AccessLog extends Filter { 
    override def apply(next: RequestHeader => Future[Result])(request: RequestHeader): Future[Result] = { 
    val result = next(request) 
    play.Logger.info(request + "\n\t => " + result) 
    result 
    } 
} 

(see framework source code here - line 93)

我創造我自己的特點,擴展GlobalSettings和doFilter方法我想獲得,可用於Filter.apply(),但GlobalSettings'的方法請求參數聲明,像這樣

override def doFilter(next: RequestHeader => Handler): (RequestHeader => Handler) = { 
    play.Logger.debug("doFilter:") 
    super.doFilter(next) 
} 

如何在重寫上述方法時獲取RequestHeader參數?

回答

0

doFilter方法有兩個參數集,第2集僅包含一個隱含的請求,因此必須推入像這樣的重寫的方法...

override def doFilter(next: RequestHeader => Handler): (RequestHeader => Handler) = { 
    request => { 
     play.Logger.debug("doFilter: " + request) 
     super.doFilter(next)(request) 
    } 
    } 
+0

我認爲這將是moreful爲OP和更多的訪客,當你添加一些解釋你的內涵。 – reporter 2014-09-04 09:57:08

+0

在答案或問題中? – 2014-09-05 08:28:41

+0

我的評論與你的答案相關。並且不要忘記將您的答案標記爲已接受;-) – reporter 2014-09-05 08:54:49