Почему заголовок «Accept: application / xml» не работает в Spring Boot после перехода на Java 11? - PullRequest
2 голосов
/ 27 февраля 2020

Я хочу переместить мой проект Spring-Boot с JDK 8 на 11.

Контроллер:

    @RequestMapping(value = "/{model}/columns", method = RequestMethod.GET, consumes = MediaType.ALL_VALUE, produces = { MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE })
    public ResponseEntity<DataModel> getColumnsModel(@PathVariable String model) {
        LOGGER.info("getColumnsModel : model[{}]", model);
        DataModel dataModel = modelService.getColumns(model);
        return Optional.ofNullable(dataModel).map(result -> new ResponseEntity<>(result, HttpStatus.OK)).orElse(new ResponseEntity<>(HttpStatus.NO_CONTENT));
    }

Мой JSON curl (ОК в JDK 8 и JDK 11):

curl -s --header "Accept: application/json" http://localhost:8084/noraui/api/hello/columns > target/actual_hello_columns.json

Мой XML локон (ОК в JDK 8, но не ОК в JDK 11 ):

curl -s --header "Accept: application/xml" http://localhost:8084/noraui/api/hello/columns > target/actual_hello_columns.xml

В JDK 11, результат становится пустым.

Как решить эту проблему (мне нужно использовать мой код на JDK8 и JDK11)?

РЕДАКТИРОВАТЬ:

У меня есть эта ошибка:

Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation]

1 Ответ

4 голосов
/ 27 февраля 2020

Попробуйте использовать более высокую версию Джексона для поддержки XML.

Добавьте эту зависимость в pom.xml.

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.10.1</version>
</dependency>

springboot 2.1.6.RELEASE, звоните только jackson-dataformat-xml 2.9.9, если вы до 2.10.1, это решает проблему.

...