2016-03-23 2 views
0

Im пытается получить ответ json от моего контроллера Spring. Im получая ниже исключенияorg.springframework.web.HttpMediaTypeNotAcceptableException Spring MVC 4.2.5

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation 

У меня есть связанные джексоны банка в pom.xml, как показано ниже

<properties> 
    <spring.version>4.2.5.RELEASE</spring.version> 
    <jstl.version>1.2</jstl.version> 
    <servletapi.version>2.5</servletapi.version> 
    <jackson.version>2.6.3</jackson.version> 
</properties> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

Ниже мой контроллер

@ResponseBody 
    @RequestMapping(value = "/getNodes.htm",produces="application/json") 
    public List<NodeDTO> getNodes() { 
... 
return nodes; 
} 

Im получает 406 ошибки в браузере и выше исключении в журнале сервера. Мой браузер правильно отправляет заголовок Accept, имеет приложение/json. Но все же Im сталкивается с этой проблемой. Я прошел через многие форумы, и никто из них не разрешил мою проблему. Пожалуйста, помогите мне решить его.

+1

Я думаю, что вы получите ошибку это значение = "/getNodes.htm", что означает "htm" pelase показать ваше сервлет-отображение в веб-xml –

ответ

2

Ваша анкета @RequestMapping неверна, в частности использование удлинителя .htm.

Это должно быть

@RequestMapping(value = "/getNodes.json",produces="application/json") 

или, возможно,

@RequestMapping(value = "/getNodes",produces="application/json") 

Spring MVC использует расширение URL, чтобы определить тип содержимого, чтобы вернуться. В вашем случае вы указываете расширение .htm, которое Spring интерпретирует как HTML. Тем не менее, это противоречит свойству produces вашей аннотации, в котором указан JSON.

Непонятно, как именно Spring использует конфликтующие типы контента, такие как это, но если вы замените расширение .htm на .json или вообще отбросьте расширение, то вам не нужно беспокоиться об этом.