2017-01-16 4 views
1

Hallo alle: Ich habe ein Endpunkt konfiguriert etwas wie dies im Frühjahr mvcSpring MVC mit Jquery Post Anruf

@RequestMapping("/path/to/endpoint") 
    public void pathToEndPoint(@RequestBody String body){ 
     //do stuff with body 
    } 

und dann in meinem html ich dies tue:

var data ; //a json object 
$.post("/path/to/endpoint", data); 

das Problem ist, Wenn Spring sieht, dass der Anfragetext tatsächlich ein json-Objekt ist, scheint er diese Objektattribute einer Java-Klasse zuordnen zu wollen und wenn er sieht, dass ich ihm eine Zeichenfolge als Argument gegeben habe, weiß er nicht, wie er dies abbilden soll.

Mit anderen Worten scheint Frühling zu versuchen, zu klug zu sein, ich eigentlich möchte nur die String-Darstellung meiner Anfrage Körper; mit anderen Worten, ich will das JSON und nicht ein Pojo, weil es in dem Format ist, das ich brauche, um es weiter unten auf der Linie zu sein.

wie bekomme ich Feder zu stoppen versucht hilfreich zu sein und einfach den rohen Anfrage Körper in einen String für mich?

danke für jede Hilfe zur Verfügung gestellt.

aktualisieren

es Frühling erscheint liest einen gepufferten Leser, die leer erweist es meine Ajax-Aufruf keine Daten sendet nicht scheint, oder das Datenattribut auf die Anfrage Körper abbildet nicht. Überall griffen sie nach Strohhalmen.

Antwort

0

Try JSON.stringify (Daten)

var data ; //a json object 
$.post("/path/to/endpoint", JSON.stringify(data)); 

Auch

Wenn Sie nehmen den Wert Zeichenfolge in der "Körper" Variable verwenden, denn es ist eine Klasse zu machen, können Sie ein Code wie dieser;

YourClass dataFromBody = (new System.Web.Script.Serialization.JavaScriptSerializer()) 
         .Dese‌​rialize<YourClass>(b‌​ody); 
+0

Fertig, aber immer noch der gleiche Fehler. – user1383163

+0

Wenn Sie den stringifizierten Wert in die Variable "body" übernehmen, um daraus eine Klasse zu machen, können Sie einen Code wie diesen verwenden; . __YourClass dataFromBody = (neu System.Web.Script.Serialization.JavaScriptSerializer()) Deserialize (Körper); __ –

+1

Sie bitte diese eine Antwort machen, damit ich – user1383163