Grails 3 — Marshaller с XML

У меня есть приложение Grails 3.1.

Ниже приведен код для настройки элементов, в котором используется маршаллер JSON, который отлично работает.

JSON.createNamedConfig("memeListView", {
            JSON.registerObjectMarshaller(Meme) { Meme memeIns ->
                return [
                        caption: memeIns.caption,
                        likeCount: memeIns.likeCount,
                ]
            }
        })

Но я попробовал приведенный выше код для маршаллера XML, но он отображает целые атрибуты объекта вместо обязательных. Ниже приведен код для маршалинга XML.

XML.createNamedConfig("memeListView", {
                XML.registerObjectMarshaller(Meme) { Meme memeIns ->
                    return [
                            caption: memeIns.caption,
                            likeCount: memeIns.likeCount,
                    ]
                }
            })

В действующей части

JSON.use('memeListView'){
      render memesList as JSON
}

Пожалуйста, предложите мне, как сделать сортировку для ответа xml.


person Amarnath R    schedule 10.04.2016    source источник


Ответы (1)


Я бы предположил, что вам нужно вернуть что-то XML-иш. Я думаю, что маршаллер xml проходит во втором аргументе.

Так что, возможно (попробую это по памяти):

XML.createNamedConfig("memeListView", {
    it.registerObjectMarshaller(Meme) { Meme memeIns, xml ->
        xml.build {
            caption(memeIns.caption )
            likeCount( memeIns.likeCount )
        }
    }
})

or

XML.createNamedConfig("memeListView", {
    it.registerObjectMarshaller(Meme) { Meme memeIns, xml ->
        xml.attribute 'caption', memeIns.caption
        xml.attribute 'likeCount', memIns.likeCount
    }
})

в зависимости от того, как вы хотите, чтобы XML выглядел?

person billjamesdev    schedule 10.04.2016
comment
XML.use(memeListView) { визуализировать список мемов как XML } - person Amarnath R; 14.04.2016
comment
Попробуйте снова? Обратите внимание, что я заменил XML.registerObejctMarshaller на it.registerObjectMarshaller. Кроме того... добавьте точку останова, чтобы увидеть, действительно ли используется код маршаллера? - person billjamesdev; 14.04.2016
comment
Рад, что это сработало... Если мы закончили, нажмите на галочку, чтобы другие знали, что вы нашли то, что искали. - person billjamesdev; 15.04.2016