重用部分 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 标准闭包 的相关文章

  • 在 Groovy 中将两个映射合并为结果映射

    我有两张地图 firstMap totalProjectCount 53 activeProjectCount 29 completedProjectCount 1 userCount 85 secondMap totalProjectCo
  • Grails 在 gsp 中迭代与访问 Map 元素

    完整上下文 我正在尝试使用 grails 应用程序处理多个文件 我将显示的代码来自后处理页面 其中提供了有关已处理文件的信息 我最初的感觉是使用这样的代码 table tr th Parsed from Excel th th Upload
  • 调试 Bootstrap.groovy 的最佳方法是什么?

    我正在将一些数据插入数据库 但即使我看不到任何验证错误 某些对象也没有插入 使用 stacktrace 或 sql 出错的最佳方法是什么 以便我可以找出问题所在 例如我这样做 new XXXXX property blah save flu
  • 在 Grails 域对象中维护自引用多对多关系的双方

    我在让多对多关系在 grails 中工作时遇到一些问题 以下内容是否有明显错误 class Person static hasMany friends Person static mappedBy friends friends Strin
  • Groovy List> 的行为类似于 List

    我在生产代码中发现了一个铸造List
  • 使用Table Per Subclass时如何确保数据完整性?

    我正在使用每个子类的表Grails 中的策略通过设置tablePerHierarchy静态的性质mapping我的超类中的字段为 false 这样 Grails 会为我的超类创建一张表 并为我的每个子类创建一张附加表 然而 虽然超类和子类记
  • 1) Java 和 2) Groovy 自动导入哪些包?

    在 Groovy 中进行过相当多的编程后 我知道某些包中的类会自动导入 1 Java 和 2 Groovy 的独家新闻是什么 是否有一个明确的列表 列出了您不需要为每种语言指定导入的语言 在Java中 默认导入的唯一包是 java lang
  • 访问静态范围内的全局变量

    有没有办法从同一脚本中声明的类的静态方法访问脚本中声明的全局变量 例如 def s 12345 class MyClass static def method println s 因为这样它会因错误而失败 You attempted to
  • Haskell 排列库函数 - 请澄清一下?

    这是代码permutationsHaskell 中的函数Data List module permutations a gt a permutations xs0 xs0 perms xs0 where perms perms t ts i
  • 关闭捕获上下文 Swift

    当我尝试更改闭包中的变量时出现此错误 A C function pointer cannot be formed from a closure that captures context 是否有解决方法或者仍然可以更改闭包内的变量 My C
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何在启动时向 groovysh 添加导入?

    我正在开发一个项目 希望用户在 Groovysh 上试验 Java 类 我想让他们方便 并希望在 groovysh 启动时默认导入某些包 这样用户就不必在每次启动 shell 时重新输入相同的导入 有谁知道如何做到这一点 提前致谢 伊戈尔
  • Gradle 任务中 doLast 和 leftShift 之间的区别?

    我知道传入配置闭包和为任务定义操作之间的区别 我相信你不能使用 lt lt 在配置闭包中 因为它看起来像语法错误 task wrong lt lt println From doLast 但 为什么我不能使用leftShift相当于 lt
  • 使用闭包和自调用函数制作计数器

    我想知道为什么这段代码不起作用 var uniqueInteger function var counter 0 return function return counter console log uniqueInteger 0 cons
  • 如何处理GORM异常

    我正在尝试对 Hibernate 引发的乐观锁类 型异常实现异常处理 但我遇到了一个奇怪的问题 看来我无法捕获任何 Gorm 异常 例如 我的服务中有以下代码 try User user User get 1 Thread sleep 10
  • 使用 Groovy 连接到 MySQL

    我正在尝试在 MAC OS 10 10 5 Yosemite 上使用以下 Groovy 代码连接到 MySQL 数据库 import groovy sql Sql try def dbURL jdbc mysql localhost 330
  • 在编写转换代码时,有哪些替代方法可以替代 asType() ?

    Groovy 中转换对象的约定似乎是使用as运算符和覆盖asType 例如 class Id def value Override public Object asType Class type if type FormattedId re
  • 更改分页部分中显示项目的数量

    有没有什么方法可以更改 grails 2x 中用户将显示 bean 的数量更改为分页部分 我在 grails 文档中找不到这个 它的意思是 参见 itemsPerPage
  • Groovy 2.0.1,我自己的类上有 GroovyCastException?

    我在我的网络应用程序项目中广泛使用 Groovy 类 我可以创建类型的实例 定义为 groovy 类 但以后永远不能转换回它 GroovyCastException发生 org codehaus groovy runtime typehan
  • Grails 4“静态类型检查”错误仅适用于日期对象[重复]

    这个问题在这里已经有答案了 所以我从 Grails 3 3 x 迁移到 4 0 13 当我尝试编译我的应用程序时 当我尝试使用format任何 Date 属性的方法 例如 class Event Date startDateTime Dat

随机推荐

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