例如:
def list = {
books = Book.findAll(...)
render(contentType: 'text/xml') {
books(count: books.size()) {
for(book in books) {
book(id: book.id) {
title(book.title)
}
}
}
}
}
使用books
和book
作为节点会导致命名冲突。我知道我可以重命名所有内容以防止出现问题,但有没有办法转义节点以防止问题并保持一个干净的命名约定?
答案 0 :(得分:4)
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)
}
}
}
}
}
答案 1 :(得分:3)
引用冲突的节点生成术语:
'books'(count: books.size()) {
或使用其他本地变量名称。