Ich erstelle mit Spring 3.1 eine Restful-Website und Webdienste für iPhone- und Android-Apps. In meiner Anwendung verwende ich Spring Message Converters ( org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
), um JSON in ein Java-Objekt zu konvertieren und umgekehrt.
Mein Ziel ist, dass es nur einen einzigen Controller geben sollte Methode (gleiche URL), die von JSP-Seite, Iphone / Andois App verwendet werden sollte.
Ich benutze Spring Form-Tag für die Objektbindung von JSP zum Controller mit Hilfe von @ModelAttribute
wie unten.
Aber das gleiche funktioniert NICHT in dem Fall, wenn die Daten von iPhone / Android-App veröffentlicht werden und das Ergebnis ist:
Daten empfangen == null;
Um dieses Problem zu lösen, habe ich @RequestBody
Annotation an Stelle von @ModelAttribute
verwendet.
Also mein Controller sieht wie folgt aus:
%Vor%Es funktioniert dann und das Ergebnis, das ich habe, ist:
Daten erhalten == Somedata;
Aber @RequestBody funktioniert dann nicht mit Spring Form auf JSP-Seite und die Daten werden nicht in Objekt konvertiert und ich habe null
-Werte.
@RequestBody
Annotation nicht verwenden, um Daten in Form von JSON zu veröffentlichen
mit Springform-Tag von JSP Seite ?? BEARBEITEN:
Während ich String
anstelle der Bean-Klasse schreibe, kann ich den Inhalt in Form von normalem Text erhalten, wie unten:
Ergebnis vom Aufruf der Webseite:
uid = 11 & amp; confirmPassword = somepassword & amp; newPassword = somepassword
Ergebnis vom iPhone mit Web-Service-Aufruf (in ** JSON ) **
%Vor%Aber das Problem ist, dass ich mit diesem Ansatz die JSON-Zeichenfolge manuell in Java-Objekte analysieren muss. Und im Webseiteninhalt muss ich die Werte manuell finden, die ich nicht will.
Bitte helfen Sie.
Grüße,
Arun Kumar
Entschuldigung, aber ich glaube nicht, dass es einen Weg gibt, weil @ModelAttribute von den Form-Post-Parametern gebunden ist und @RequestBody den Körper direkt an den Json-Konverter übergibt. Sie könnten das Spring-Form-Tag durch einen einfachen Json-Post ersetzen, aber das ist wahrscheinlich weniger praktisch als zwei @RequestMapping-Methoden.
Es ist @RequestBody. Ich denke, es ist besser, den Mime-Typ zu spezifizieren, den Sie erwarten und den Sie mit @RequestMapping als Ausgabe produzieren,
%Vor%Registrieren Sie dann die entsprechenden Nachrichtenkonverter mit AnnotationMethodHandlerAdapter
Dieser Nachrichtenkonverter ist verantwortlich für Marshalling & amp; Unmarshalling Ihrer Anfrage & amp; Response-Entity auf Basis von & amp; verbraucht Attribute.
%Vor%Tags und Links spring rest spring-mvc