Revel 过滤器


当前第2页 返回上一页

此功能通过 FilterConfiguringFilter 实现, 它本身就是一个过滤器.

实现一个过滤器

保持过滤器链能够依次执行

Filters 负责依次调用下一个过滤器来依次处理请求。这通常需要完成下面的表达式:

var MyFilter = func(c *revel.Controller, fc []revel.Filter) {
    // .. 做一些预处理 ..

    fc[0](c, fc[1:]) // 执行下一个过滤器

    // .. 做一些后期处理 ..
}

获取控制器类型

Filters 接受一个 *Controller 类型的参数, 而不是被调用的实际的控制器类型。如果过滤器需要访问实际的控制器类型,可以这样实现:

var MyFilter = func(c *revel.Controller, fc []revel.Filter) {
    if ac, err := c.AppController.(*MyController); err == nil {
        // 判定存在一个 *MyController 实例...
    }

    fc[0](c, fc[1:]) // 执行下一个过滤器
}

注意:这种模式往往说明拦截器可能是实现所需功能的好的机制的一个指标。


标签:Revel

返回前面的内容

相关阅读 >>

Revel 参数验证

Revel results

Revel 模板

Revel 常见问题

Revel 控制器概要

Revel 命令行工具

Revel 项目结构

Revel 消息处理

Revel 路由routes

Revel 参数绑定

更多相关阅读请进入《Revel》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...