“Не удалось найти приемлемое представление”, использующее spring-boot-starter-web

Я пытаюсь использовать spring-boot-starter-web создать сервис отдыха, подающий представления JSON объектов Java. Из того, что я понимаю, что эта веб-начинающим начальной загрузкой банка, как предполагается, обрабатывает преобразование в JSON через Jackson автоматически, но я вместо этого получаю эту ошибку.

{ "timestamp": 1423693929568,
  "status": 406,
  "error": "Not Acceptable",
  "exception": "org.springframework.web.HttpMediaTypeNotAcceptableException",
  "message": "Could not find acceptable representation"
}

Мой Контроллер - это...

@RestController
@RequestMapping(value = "/media")
public class MediaController {
    @RequestMapping(value = "/test", method = RequestMethod.POST)
    public @ResponseBody UploadResult test(@RequestParam(value="data") final String data) {
      String value = "hello, test with data [" + data + "]"; 
      return new UploadResult(value);
    }

    @RequestMapping(value = "/test2", method = RequestMethod.POST)
    public int test2() {
        return 42;
    }

    @RequestMapping(value = "/test3", method = RequestMethod.POST)
    public String test3(@RequestParam(value="data") final String data) {
        String value = "hello, test with data [" + data + "]"; 
        UploadResult upload = new UploadResult(value);
        return upload.value;
    }


    public static class UploadResult {
        private String value;
        public UploadResult(final String value)
        {
            this.value = value;
        }
    }
}

Мой pom.xml имеет...

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>1.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <version>1.2.1.RELEASE</version>
        <scope>provided</scope>
    </dependency>

mvn dependency:tree шоу, что spring-boot-starter-web действительно зависит от привязки данных jackson2.4 и таким образом должен быть на пути к классу...

[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.2.1.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:1.2.1.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:1.2.1.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.2.1.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.2.1.RELEASE:compile
[INFO] |  |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.8:compile
[INFO] |  |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.8:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.14:runtime
[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.4:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.4.0:compile
[INFO] |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.4.4:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile
[INFO] |  |  +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
[INFO] |  |  \- com.fasterxml:classmate:jar:1.0.0:compile
[INFO] |  +- org.springframework:spring-web:jar:4.1.4.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-aop:jar:4.1.4.RELEASE:compile
[INFO] |  |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  |  +- org.springframework:spring-beans:jar:4.1.4.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-context:jar:4.1.4.RELEASE:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:4.1.4.RELEASE:compile
[INFO] |     \- org.springframework:spring-expression:jar:4.1.4.RELEASE:compile

... все же вызов test сервис дает упомянутую выше ошибку. test2 и test3 хорошо работайте доказывая, что это должно просто быть предпринятое преобразование в JSON, который перестал работать? Я пропускаю некоторую проблему конфигурации или аннотации? От всех примеров я могу найти, аннотирование класса для основного преобразования Jackson JSON больше не необходимо.

Любая справка значительно ценится.

57
задан 12 February 2015 в 01:58

5 ответов

У меня была эта проблема при доступе к приводу. Помещение после класса конфигурации решило проблему:

@Configuration
@EnableWebMvc
public class MediaConverterConfiguration implements WebMvcConfigurer {
    @Bean
    public MappingJackson2HttpMessageConverter jacksonConverter() {
        MappingJackson2HttpMessageConverter mc =
                new MappingJackson2HttpMessageConverter();
        List<MediaType> supportedMediaTypes =
                new ArrayList<>(mc.getSupportedMediaTypes());
        supportedMediaTypes
                .add(MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE));
        supportedMediaTypes.add(
            MediaType.valueOf("application/vnd.spring-boot.actuator.v2+json"));
        mc.setSupportedMediaTypes(supportedMediaTypes);
        return mc;
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(jacksonConverter());
    }
}
0
ответ дан 1 November 2019 в 16:36

Добавьте @Data аннотацию по pojo классу, который Вы хотите десериализовать. Проблема решена для меня :)

, Например,

    import lombok.Data;

    @Data
    public class Response {
    private Integer status;
    private String type;
    }
0
ответ дан 1 November 2019 в 16:36

У меня было то же исключение. Проблема была, что я использовал аннотацию

@RepositoryRestController

вместо

@RestController

0
ответ дан 1 November 2019 в 16:36

В моем случае я, оказалось, использовал Ломбок и по-видимому существуют конфликты с получением и устанавливают

0
ответ дан 1 November 2019 в 16:36

У меня было то же исключение, но причина отличалась, и я не мог найти информацию об этом, таким образом, я отправлю его здесь. Это было просто простое для пропуска ошибки.

Плохо:

@RestController(value = "/api/connection")

Хороший:

@RestController
@RequestMapping(value = "/api/connection")
0
ответ дан 1 November 2019 в 16:36

Другие вопросы по тегам:

Похожие вопросы: