2014-03-08 3 views
0

@ResponseBody не может вернуться прогнозный JSON, и я получаю Etat HTTP 406 в браузерене @ResponseBody возвращать ошибку JSon формата 406

я использую: ДЖЕКСОНА-ядро-над уровнем моря 1.9.3 и ajckson-картографа-над уровнем моря 1.9.3

Getjson:

var p = $.getJSON("natureParOperateur.html", {nomOperateur: $("select#nomOperateur").val()}, function(j) { 

} 

SPRING:

@RequestMapping(value = "/natureParOperateur.html", method = RequestMethod.GET) 
      public @ResponseBody 
      List<Nature> natureParOperateur(@RequestParam("nomOperateur") String nomOperateur) { 
    List<Nature> listeNatures = metier.consulterNaturesParNomOperateur(nomOperateur); 
    return listeNatures ; 
      } 

мой servelet-Contex т:

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

    <!-- 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="ma.cosumar.web" /> 

    <context:component-scan base-package="rapport.excel" /> 

    <beans:bean id="viewResolver1" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> 
      <beans:property name="order" value="1"/> 
      <beans:property name="basename" value="views"/> 
    </beans:bean> 


</beans:beans> 

я получаю в браузере по этому адресу:

http://othman-pc.com:8080/dsi/natureParOperateur.html?nomOperateur=IAM

type Rapport d''état 406 

message 

description La ressource identifiée par cette requête n''est capable de générer des réponses qu''avec des caractéristiques incompatible avec la directive "accept" présente dans l''entête de requête. 

мой ПОМ:

<

dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework-version}</version> 
      <exclusions> 
       <!-- Exclude Commons Logging in favor of SLF4j --> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 

     <!-- AspectJ --> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>${org.aspectj-version}</version> 
     </dependency> 

     <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${org.slf4j-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.15</version> 
      <exclusions> 
       <exclusion> 
        <groupId>javax.mail</groupId> 
        <artifactId>mail</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>javax.jms</groupId> 
        <artifactId>jms</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jdmk</groupId> 
        <artifactId>jmxtools</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jmx</groupId> 
        <artifactId>jmxri</artifactId> 
       </exclusion> 
      </exclusions> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- @Inject --> 
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
     </dependency> 

     <!-- Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <!-- Test --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.7</version> 
      <scope>test</scope> 
     </dependency> 
      <!-- Hibernate --> 






      <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>3.2.0.RELEASE</version> 
      </dependency> 
      <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>3.2.0.RELEASE</version> 
      </dependency> 
      <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>3.2.0.RELEASE</version> 
      </dependency> 
      <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>3.2.0.RELEASE</version> 
      </dependency> 
      <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.9</version> 
      </dependency> 
      <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-excelant</artifactId> 
      <version>3.9</version> 
      </dependency> 
      <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-ooxml</artifactId> 
      <version>3.9</version> 
      </dependency> 
      <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-ooxml-schemas</artifactId> 
      <version>3.9</version> 
      </dependency> 
      <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-scratchpad</artifactId> 
      <version>3.9</version> 
      </dependency> 
      <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-examples</artifactId> 
      <version>3.9</version> 
      </dependency> 


     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.6.9.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.0.0.Final</version> 
     </dependency> 
        <!-- Jackson JSON Mapper --> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-core-asl</artifactId> 
      <version>1.9.13</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.13</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.3</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.api-client</groupId> 
      <artifactId>google-api-client-gson</artifactId> 
      <version>1.17.0-rc</version> 
     </dependency> 

ответ

2

Этот вопрос Essent ially, что весна не знает, какой конвертер для преобразования ответа с - это может быть фиксированным, отправив Accept заголовок, если вы вызываете с помощью библиотеки AJAX, вы можете использовать подход, рекомендованный здесь: Cannot properly set the Accept HTTP header with jQuery

Если вы с помощью браузера получить, вариант может быть использовать расширение .json:

Изменить requestmapping не имеют расширение .html:

@RequestMapping(value = "/natureParOperateur", method = RequestMethod.GET) 
public @ResponseBody List<Nature> natureParOperateur(@RequestParam("nomOperateur") String nomOperateur) { 
    List<Nature> listeNatures = metier.consulterNaturesParNomOperateur(nomOperateur); 
    return listeNatures ; 
} 

Тогда запрос как этот http://othman-pc.com:8080/dsi/natureParOperateur.json?nomOperateur=IAM должен внутренне перевести расширение на соответствующий тип Accept (в этом ca се application/json

+0

я не могу решить мою проблему: '(я removoe расширение HTML, а также я протестированные посылая Accept заголовок с помощью AJAX я не производит formt из ResponseBody JSON – user2912015

+0

yeeeeeeeeeeeeeeeeeeeeeeeeeeeees спасибо youuuuuuuuuuuuuuuuu я решить мою проблему путем удаления расширения HTML в JSP а также весной и changeggggg jar jackson до 1.9.3 asl и mapper, спасибо вам большое – user2912015

Смежные вопросы