2015-03-07 8 views
5

Hilfe - was kann ich noch tun, um diesen Fehler zu beheben? org.springframework.web.HttpMediaTypeNotAcceptableException :: Konnte keine akzeptable Darstellung finden.HttpMediaTypeNotAcceptableException: Konnte keine akzeptable Darstellung finden Feder mvc 4.1.5 mit com.fasterxml 2.5.1

Ich denke, mein Projekt ist richtig konfiguriert, um json restful Anfragen zu behandeln. In den letzten Tagen habe ich verschiedene Vorschläge ohne Erfolg gelesen und angewendet. Gibt es noch weitere Ideen, was ich anders machen sollte?

Ich verwende Spring MVC 4.1.5 und com.fasterxml 2.5.1.

Ein Teil meiner pom.xml

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId> 
    <version>2.5.1</version> 
    <type>bundle</type> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.5.1</version> 
    <type>bundle</type> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.5.1</version> 
    <type>bundle</type> 
</dependency> 

Hier ist mein Teil meiner web.xml

<!-- Creates the Spring Container shared by all Servlets and Filters --> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- Processes application requests --> 
<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/spring/appServlet/servlet-context.xml 
     </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

Dies ist Teil meiner Servlet-context.xml

<!-- Enables the Spring MVC @Controller programming model --> 
<annotation-driven /> 

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --> 
<resources mapping="/resources/**" location="/resources/" /> 

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> 
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <beans:property name="prefix" value="/WEB-INF/views/" /> 
    <beans:property name="suffix" value=".jsp" /> 
</beans:bean> 

<context:component-scan base-package="com.losgatos"> 
    <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" /> 
</context:component-scan> 

Hier ist mein Controller

Hier

ist der User User POJO

package com.losgatos; 

import java.util.EnumSet; 

public class User { 

    public User(){ 
     id = 0; 
     age = 22; 
     name = "Titus Feng"; 
     alias = "tornado tie"; 
     roles = EnumSet.of(Role.NORMAL, Role.NEW); 
    } 

    private int id, age; 
    private String name, alias; 
    private EnumSet<Role> roles; 

    //added getters and setters here 

    public enum Role{ 
     NEW, NORMAL, ADMIN, MEMBER, DORMANT 
    } 
} 
+0

können Sie uns AJAX-Konfiguration zeigen, wie Sie REST-Dienst aufrufen? – Rembo

+0

Im Moment rufe ich http: // localhost: 8080/user/data direkt vom Browser an, um zu testen, ob es wie geplant funktioniert – 000

+0

Siehe auch http://stackoverflow.com/questions/28466207/could-not- find-acceptable-representation-using-feder-boot-starter-web –

Antwort

1

ich habe es bekommen, indem sie endlich arbeiten:
<type>bundle</type> von meiner fasterxml.jackson pom.xml Einträge zu entfernen
meine pom.xml-Datei erneut ausführen
Reinigung des Projekts bauen (Projekt -> sauber)
Reinigung und Neustart des Servers

0

In Ihrem Frühjahr Kontext-Konfigurationsdatei (Dispatcher-servlet.xml) Sie haben:

<context:component-scan base-package="com.losgatos"> 
    <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" /> 
</context:component-scan> 

und Ihr Controller kommentierte mit:

@RestController 
@RequestMapping("user") 
public class UserController { 
... 
} 

Ihre Controller-Klasse wird überhaupt nicht in den Container geladen. BTW wie pro Ihre Ausnahmemeldung:

I am getting the error

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

Diese Ausnahme auslöst, wenn Sie die folgenden in Zusammenhang Datei nicht registriert haben:

  • <mvc:annotation-driven /> (Sie haben nicht auf der Kontext-Datei registriert)
  • Bei Bedarf JARs sind nicht im Klassenpfad vorhanden (Sie haben es bereits)
  • Wenn ENUM verwendet wird, notieren Sie Ihre ENUM-Klasse mit @JsonFormat(shape= JsonFormat.Shape.OBJECT)

EDIT: getestet für mich gut funktioniert, mit Frühling 4.0.1.RELEASE und unter einzelner JSON Abhängigkeit:

com.fasterxml.jackson.core jackson-databind 2.4.3

und Controller-Klasse:

@RestController 
@RequestMapping("/u") 
public class UserRestController { 

    @RequestMapping(value = "/data", produces="application/json") 
    public RestUser getUser(){ 
     return new RestUser(); 
    } 
} 

bekam:

{"id":0,"age":22,"name":"Titus Feng","alias":"tornado tie","roles":["NEW","NORMAL"]} 

Anregung, Änderung dieser:

<context:component-scan base-package="com.losgatos"> 
    <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" /> 
</context:component-scan> 

zu:

<context:component-scan base-package="com.losgatos"> 
    <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.RestController" /> 
</context:component-scan> 
+0

Vielen Dank für Ihre Eingabe, @Rembo. Meine Spring-Kontextdatei verwendet bereits . Die Spring-Version bevorzugt es zu . Ich habe die ENUM-Klasse mit @JsonFormat (shape = JsonFormat.Shape.OBJECT) kommentiert, aber ich bekomme weiterhin die gleiche Fehlermeldung. – 000

+0

Ihre vorgeschlagene Ersetzungsregel für Komponentenscan fehlt. Könnten Sie es hinzufügen? – 000

+0

hey @Rembo, könnten Sie die fehlende Ersatz-Komponente-Scan-Regel hinzufügen? – 000

1

Spring Framework 4.1 raised some dependencies requirements; Sie müssen Jackson auf Version 2.3 oder höher upgraden. Beachten Sie, dass die Artefaktgruppen-ID in com.fasterxml geändert wurde.

+0

Danke, dass Sie mich wissen lassen, @Brian. Ich habe das org.codehaus durch core.fasterxml Bibliotheken ersetzt. Ich fuhr fort, die gleichen Fehler zu erhalten: Klasse org.springframework.web.HttpMediaTypeNotAcceptableException aufgetreten :: nicht akzeptabel Darstellung ich auch bemerkt Fehler in fasterxml Abhängigkeit Tags meine pom.xml-Datei nicht finden kann, dass Fehlenden Artefakt com sagen. fasterxml.jackson.core: jackson-core: bundle: 2.5.1 Es hat maven nicht daran gehindert, die core.fasterxml-Abhängigkeiten zu installieren, was aber gut ist. – 000

Verwandte Themen