2014-09-03 29 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