Выход из Grails приводит к конфликтам имен в XML-сборщике - PullRequest
3 голосов
/ 26 декабря 2011

Например:

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 в качестве узлов вызывает конфликты имен. Я понимаю, что могу переименовать все, чтобы предотвратить проблему, но есть ли способ избежать узлов, чтобы предотвратить проблему и сохранить чистое соглашение об именах?

Ответы [ 2 ]

4 голосов
/ 23 января 2012

Хуберт Кляйн Иккинк опубликовал запись в блоге с альтернативным решением:

Groovy Goodness: разрешение конфликтов имен со строителями

Он рекомендует добавлять 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)
                }
            }
        }
    }
}
3 голосов
/ 27 декабря 2011

Процитируйте конфликтующие термины, генерирующие узлы:

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

или используйте другое имя локальной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...