我有一个每个控制器继承的特征。要求是检查控制器中定义的所有操作中的URL。我发现在每个控制器中执行此方法非常烦人。有没有办法在一个地方执行这个方法?
性状
trait Validator extends Controller {
def checkurl(implicit request:RequestHeader)={
//code to check url
}
}
控制器
object UserHandler extends Controller with Validator{
def showuser = Action {
implicit request =>
checkurl(request)
Ok("...")
}
答案 0 :(得分:3)
您可以定义帮助def
:
trait Validator extends Controller {
def checkurl(implicit request: RequestHeader)={
//code to check url
}
def checkedAction(block: Request[AnyContent] => Result): Action[AnyContext] =
Action { implicit request =>
checkUrl
block(request)
}
}
object UserHandler extends Controller with Validator {
def showuser = checkedAction { implicit request =>
Ok("...")
}
}
答案 1 :(得分:2)
您可以扩展GlobalSettings
并覆盖onRequest
方法。它是对您的应用程序发出的所有请求的拦截器。