重用部分 Grails 标准闭包

2023-12-19

我的 Grails 应用程序中有一个相当大的标准闭包,我想在应用程序的多个位置重用其中的一部分。我不想复制我需要重用的部分,而是想将其定义为一个单独的闭包,并在需要的地方引用它,但我在语法上有点困难。

这是一个简化/缩减的版本,但本质上我的标准看起来像这样:

def criteriaClosure = {
    and {
        // filtering criteria that I'd like to reuse in lots of places
        or {
            names.each { name ->
                sqlRestriction(getFilteringSql(name), [someId])
            }
        }

        if (isOrganisationChild(childDefaultGrailsDomainClass)) {
            sqlRestriction(getFilteringSql(domain), [someArg])
        }

        // filtering criteria that's specific to this particular method
        sqlRestriction(getSomeOtherSql(), [someOtherArg])
    }
}

def criteria = domain.createCriteria()
def paginatedList = criteria.list([offset: offset, max: max], criteriaClosure)

我尝试定义我想要作为变量重用的闭包部分,并在我的标准闭包中引用它,但是它定义的限制似乎不适用。

def reusableClosure = {
    and {
        or {
            names.each { name ->
                sqlRestriction(getFilteringSql(name), [someId])
            }
        }

        if (isOrganisationChild(childDefaultGrailsDomainClass)) {
            sqlRestriction(getFilteringSql(domain), [someArg])
        }
    }
}

def criteriaClosure = {
    and {
        reusableClosure() //this doesn't seem to work
        sqlRestriction(getSomeOtherSql(), [someOtherArg])
    }
}

我确信这一定是一件非常简单的事情,所以如果这是一个愚蠢的问题,我深表歉意。有任何想法吗?


我认为你必须将代表传递给reusableClosure, ie:

def criteriaClosure = {
    and {
        reusableClosure.delegate = delegate
        reusableClosure()
        sqlRestriction(getSomeOtherSql(), [someOtherArg])
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重用部分 Grails 标准闭包 的相关文章

随机推荐

  • bash - 从本地计算机运行远程脚本

    我试过这个 bin bash ssh email protected cdn cgi l email protection sudo etc init d script restart 但我收到这个错误 sudo no tty presen
  • NVDA开启时区分Mozilla中的按键和点击

    要求是区分Mozilla浏览器中的按键和鼠标点击事件 条件是 Mozilla 浏览器应该能够区分事件 点击和进入 NVDA 已开启 在您的 MouseEvent 上 检查detail https developer mozilla org
  • Zend OAuth 与 Twitter 单一访问令牌

    我正在开发一个应用程序 它要求用户使用 twitter 和 OAuth 登录 感谢 Zend OAuth 一切都工作得很好 问题是 Web 应用程序还会对 twitter API 进行一些调用 但这些调用将在内部处理 无需进行身份验证 Tw
  • 对基类的派生类进行序列化和反序列化

    我正在尝试创建一个基类 我可以从中继承 向派生类添加属性 并使用基类中的 Load 和 Save 方法 我发现自己一遍又一遍地编写 加载 和 保存 并且我想对其应用一些 DRY namespace Common using System u
  • Razor 智能感知错误:无法使用功能“扩展方法”,因为它不是 ISO-2 C# 语言规范的一部分

    Goal 使用cshtmlRazor用于格式化数据的模板 将 cshtml Razor 模板嵌入类库中 如下所示Embedded Resources Use Linqcshtml模板中的语句和扩展方法 我创建了一个新的类库项目 然后进行了调
  • Rails 应用程序的 SaaS 计费:Chargify、PayPal 还是...?

    我正在大二学习一般编程 更具体地说是 Ruby on Rails 我创建了多个应用程序 最后终于有了一个我想开始收费的应用程序 我以前从未实现过这样的事情 而且我觉得 从我读到的内容来看 提供的大多数文档都有点超出我的理解范围 我不介意深入
  • 处理历史日历日期

    处理旧日历形式中描述的历史日期有哪些标准和策略 当代的公历 http en wikipedia org wiki Gregorian calendar使用内置编程语言库或数据格式 例如 不同长度的月份 闰年等 相对容易处理日历ISO8601
  • 具有跨域 iframe 的页面的 Greasemonkey 脚本

    我想实现 JavaScript 来修改输入字段的内容iframe从另一个域加载 这是网站 http www ah nl over ah services mobiel online opwaarderen 困难 不知何故 jQuery 加载
  • GitHub 上的“密钥无效”消息

    我已根据概述的过程为新服务器安装生成了 SSH 密钥here http help github com mac set up git 但是 当我复制内容时id rsa pub在 GitHub 上的密钥列表中 我收到错误消息 密钥无效 请确保
  • HTML 中的 H1-H6 字体大小

    在 HTML 中 我想也是在一般的排版中 H1 H6 元素似乎有一些定义的大小 即 如果基线字体大小为 16px 或 100 则 h1 w c 应为 2 25em 36px H2 w c 应该是 1 5em 24px 等等 这些变量从哪里来
  • 如何在 Python 中将 XML 转换为 JSON? [复制]

    这个问题在这里已经有答案了 可能的重复 使用 Python 将 XML 转换为 JSON https stackoverflow com questions 191536 converting xml to json using pytho
  • 如何关闭 PrimeFaces 套接字连接

    我们在 J2E 应用程序中使用 PrimeFaces 4 0 套接字 和atmosphere 2 0 3 进行服务器端推送 应用程序的问题是在关闭浏览器或从应用程序注销后不会关闭套接字 因此 应用程序生成一个处于 CLOSE WAIT 状态
  • 询问SPARQL资源是否存在

    检查 SPARQL 资源是否存在的好方法是什么 我正在寻找相当于向例如发送 HTTP GET 请求的方法 http dbpedia org resource Game of Thrones并检查 HTTP 状态代码 但我想使用 SPARQL
  • Angular 2 更新 [已禁用]

    我正在尝试根据另一个选择的值 真 假 动态启用 禁用一组选择输入 然而 它似乎只适用于初始页面加载 表单加载时禁用选择输入 当我将控制输入更改为true 其他输入现已启用 但是 在初始启用后它们不会变回原样 我的代码如下 tr td pro
  • App Engine SDK PIL 错误

    我正在 MacOS 上为 Google App Engine 开发 Python 应用程序 但在尝试设置 PIL 进行本地开发时遇到了麻烦 我在 virtualenv 中运行 Python 2 5 并且还使用 pip 在 vi rtuale
  • C 中双精度数组的优化和[重复]

    这个问题在这里已经有答案了 我有一项任务 我必须完成一个程序并使其在时间上更有效率 原来的代码是 include
  • 调整文本大小以完全填满容器

    我有一个div具有固定高度和流体宽度 15 body宽度 我希望里面的段落文本完全填满div 不溢出也不底部填充 我尝试使用 jQuery 增加文本大小 直到段落的高度等于容器的高度div 到那时 文本应该完全覆盖div 唯一的问题是 fo
  • SQL Server 2008:禁用某一特定表分区上的索引

    我正在 SQL Server 2008 中使用一个大表 约 100 000 000 行 我经常需要在该表中批量添加和删除约 30 000 000 行 目前 在将大批量加载到表中之前 我会禁用索引 插入数据 然后重建索引 我测量这是最快的方法
  • 冲突.策略选项中的 mask.ok 不起作用

    我在工作时加载了十几个软件包 其中大部分是 tidyverse 我足够信任它可以管理它们与基础 R 的冲突 因此 我想在加载它们时消除预期的冲突警告 正如读到的 library并理解为https stackoverflow com a 62
  • 重用部分 Grails 标准闭包

    我的 Grails 应用程序中有一个相当大的标准闭包 我想在应用程序的多个位置重用其中的一部分 我不想复制我需要重用的部分 而是想将其定义为一个单独的闭包 并在需要的地方引用它 但我在语法上有点困难 这是一个简化 缩减的版本 但本质上我的标