第六章 action组合¶
自定义action¶
创建 action
的方法定义在特质 ActionBuilder
中,我们创建的 action
实际上是 ActionBuilder
特质的实例。
如果要实现自定义 action
,只需要继承特质 ActionBuilder
,并实现 invokeBlock
方法,下面实现一个自定义 action
,它能记录每个访问请求。
import play.api.mvc._
object LoggingAction extends ActionBuilder[Request] {
def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
Logger.info("Calling action")
block(request)
}
}
现在可以使用刚才定义的 LogginAction
了:
def index = LoggingAction {
Ok("Hello World")
}