【问题标题】:Grails 3.2.8 upgrade: Implementing filtersGrails 3.2.8 升级:实现过滤器
【发布时间】:2017-05-02 02:23:57
【问题描述】:

我正在将 Grails 从版本 2.4.4 升级到 3.2.8。我读到 Grails 3 引入了拦截器,但仍然支持过滤器。我想我想继续使用过滤器,因为我有几个过滤器很广泛。下面是一个 sn-p,我基本上检查请求是什么并设置要在视图布局 gsp 中使用的变量。如何继续使用我创建的过滤器(如何注册此过滤器)或如何将以下内容转换为拦截器。

class AdminMenuFilters {

    def ACTIVE_CLASS_NAME = "active"

    def filters = {

        admin(controller:'admin', action:'index') {
            before = {
                request.dashboardActive = ACTIVE_CLASS_NAME
            }
        }

        layout(controller:'layout', action:'*'){
            before = {
                def layoutActive = false
                switch(actionName){
                    case null :
                        layoutActive = true
                        break;
                    case "index" :
                        layoutActive = true
                        break;
                    case "tags" :
                        layoutActive = true
                        break;
                    case "how" :
                        layoutActive = true
                        break;
                }
                if(layoutActive){
                    request.layoutActive = ACTIVE_CLASS_NAME
                }
            }
        }
    }
}

提前感谢您的帮助。

【问题讨论】:

    标签: grails


    【解决方案1】:

    请参阅升级文档,您可以包含一个过滤器插件以继续使用过滤器。 http://docs.grails.org/latest/guide/upgrading.html

    【讨论】:

      【解决方案2】:

      我找到了一个使用拦截器的解决方案。我将需要为每个控制器而不是一个过滤器创建一个拦截器,然后使用正则表达式来捕获一个动作被选中并设置我的活动变量。

      使用布局控制器的示例

      class LayoutActiveInterceptor{
      
          LayoutActiveInterceptor(){
              match(controller:"layout", action: ~/(index|tags|how)/)
          }
      
          boolean before() { 
              request.layoutActive = Constants.ACTIVE_CLASS_NAME
              true 
          }
      
          boolean after() { true }
      
          void afterView() {
              // no-op
          }
      }
      

      老实说,我认为这是一个类文件就足够的情况。任何有关如何注册过滤器的指导以防万一将不胜感激。提前感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-15
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多