2011-07-11 4 views
1

Je veux envoyer json au serveur en utilisant Spring 3.x, j'utilise l'annotation @RequestBody, mais mon contrôleur ne s'appelle pas.envoyer json au serveur printemps 3.x

S'il vous plaît, envoyez-moi un exemple complet, le cas échéant, je suis en train d'utiliser par exemple dans http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ mais il ne fonctionne pas. Voici un code javascript

function sendAjax() { 
var person = new Object(); 
person.firstname = "Firsname"; 
person.lastname = "Lastname"; 

jQuery.ajax({ 
    url: "person", 
    type: 'POST', 
    dataType: 'json', 
    data: person, 
    contentType: 'application/json', 
    success: function(data) { 
     alert(data.firstname + " " + data.lastname); 
    } 
});} 

Et mon contrôleur est

@Controller public class AjaxController { 

@RequestMapping(value="person", method = RequestMethod.POST) 
public @ResponseBody Person getRequest(@RequestBody Person person) {   
    System.out.println(person.getFirstname() + " " + person.getLastname()); 
    return new Person("Return", "Body"); 
}} 

mon fichier xml

<mvc:annotation-driven />    
<context:component-scan base-package="com.synisys.spring.test.controllers" /> 
<context:annotation-config/> 

<mvc:resources mapping="/js/**" location="/js/"/> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
      <value>/WEB-INF/pages/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 

<bean id="jacksonMessageConverter" 
    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> 
<bean 
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <ref bean="jacksonMessageConverter" /> 
     </list> 
    </property> 
</bean> 
+0

Qu'est-ce qui se passe? Avez-vous une erreur? Y a-t-il une sortie de journal? –

+0

Rien ne se passe. Mon contrôleur ne s'appelle tout simplement pas. si je supprime @RequestBody dans mon contrôleur, cela fonctionne – user687014

Répondre

3

S'il vous plaît assurez-vous que vous avez

<context:annotation-config/> 

et aussi

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
<property name="messageConverters"> 
    <list> 
    <ref bean="jacksonMessageConverter"/> 
    </list> 
</property> 
</bean> 

Dans votre fichier print xml conf.

+0

merci, pour votre réponse, mais cela ne fonctionne toujours pas – user687014

+0

lire cet article http://stackoverflow.com/questions/5908466/jquery-spring-mvc-requestbody- et-json-making-it-work-together/5908847 # 5908847 Je pense que cela pourrait vous aider. –

+0

ça ne marche toujours pas – user687014

0

dans votre appel ajax ajouter

var dat = JSON.stringify({ 
    "firstname " : firstname , 
    "lastname ": lastname 
}); 

jQuery.ajax({ 
    url: "person", 
    type: 'POST', 
    dataType: 'json', 
    data: person, 
    contentType: 'application/json', 
    success: function(data) { 
     alert(data.firstname + " " + data.lastname); 
    } 
}); 

et assurez-vous d'ajouter la dépendance associée (si vous utilisez Maven Spring mvc)