转义Grails呈现XML生成器命名冲突

转义Grails呈现XML生成器命名冲突,grails,groovy,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) }

例如:

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

使用
book
book
作为节点会导致命名冲突。我知道我可以重命名所有内容以防止问题发生,但是否有办法避开节点以防止问题发生并保持干净的命名约定

引用冲突节点生成术语:

 'books'(count: books.size()) {

或者使用不同的局部变量名。

Hubert Klein Ikkink发布了一篇博客文章,其中提供了一种替代解决方案:

他建议在节点名称前加上
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)
                }
            }
        }
    }
}

我的印象是引用只适用于保留的词。非常感谢。