我有一个每个控制器继承的特征.要求是检查控制器中定义的所有操作中的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("...") }
解决方法
你可以定义一个帮助器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("...") } }