grails - 转义 Grails 呈现 XML 构建器命名冲突

标签 grails groovy

例如:

def list = {
    books = Book.findAll(...)
    render(contentType: 'text/xml') {
        books(count: books.size()) {
            for(book in books) {
                book(id: book.id) {
                    title(book.title)
                }
            }
        }
    }
}

使用booksbook 作为节点会导致命名冲突。我知道我可以重命名所有内容以防止出现问题,但是有没有办法转义节点以防止出现问题并保持干净的命名约定?

最佳答案

Hubert Klein Ikkink 发布了一篇带有替代解决方案的博客文章:

Groovy Goodness: Solve Naming Conflicts with Builders

他建议在节点名称前添加 delegate,这样示例将变为:

def list = {
    books = Book.findAll(...)
    render(contentType: 'text/xml') {
        delegate.books(count: books.size()) {
            for(book in books) {
                delegate.book(id: book.id) {
                    title(book.title)
                }
            }
        }
    }
}

关于grails - 转义 Grails 呈现 XML 构建器命名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8638745/

相关文章:

gradle - 自定义gradle插件抛出无法加载类 'io.github.classgraph.ClassGraph'

grails - Groovy/Grails : Enhance a Static Closure

grails - grails codenarc “Error Script not found: Codenarc”

regex - 运行 groovy 时 Windows CMD 的奇怪行为

list - Groovy/Grails - 需要检索列表索引值

grails - 删除项目后如何保持查询结果?

java - 支持JDK 1.4的最新版Groovy是什么

hibernate - 我们可以在 grails 中实现表拆分/在日期字段中使用基于月份的 Hibernate

grails - Ra-在 Grails 应用程序中对更改后的用户进行身份验证

grails - Multi-Tenancy 时如何使用DomainUnitTest进行测试