Вложенный ответ XML в весенней загрузке с Kotlin - PullRequest
0 голосов
/ 10 октября 2018

Я хочу xml-ответ на POST-запрос, например:

<Outer>
    <abc>1</abc>
    <Inner>
        <def>2</def>
    </Inner>
</Outer>

, но я получаю это:

<Outer>
    <abc>1</abc>
</Outer>

Вот код:

Класс данных Kotlin:

@XmlRootElement
class Outer {
    val abc = 1
    @XmlRootElement
    class Inner {val def = 2}
}

Контроллер отдыха Kotlin:

@RestController
@RequestMapping("/")
class Controller {

    @PostMapping("/abc")
    fun registerByMail() : Outer {
        return Outer()
    }
}

Скажите, пожалуйста, где я делаю не так.Я довольно новичок в Kotlin и Spring-boot.

1 Ответ

0 голосов
/ 10 октября 2018

Я сохранил вашу модель, но использовал JSON-dataformat-xml вместо JAXB и запрос GET вместо POST:

@RestController
class Controller {

    @GetMapping("/abc")
    fun registerByMail() : Outer {
        return Outer()
    }

    @JacksonXmlRootElement
    class Outer(val abc: Int = 1) {

        @JacksonXmlProperty(localName = "Inner")
        val inner = Inner(2)

        data class Inner(val def: Int)
    }
}

Ваша ошибка в том, что вы не предоставили экземпляр Inner, выпросто предоставьте определение класса.Я использовал класс данных для внутреннего (https://kotlinlang.org/docs/reference/data-classes.html),, но вы также можете использовать простой класс с основным конструктором, как я.

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