@RequestBody oder @ModelAttribute mit Feder+REST web services

Bin ich zum erstellen eines Restful-website und Web-services für das iPhone und android-apps mit Frühjahr 3.1. In meiner Anwendung, ich bin mit Spring-Nachricht-Konverter (org.springframework.http.converter.json.MappingJacksonHttpMessageConverter) die Konvertierung von JSON in Java-Objekte und Umgekehrt.

Mein Ziel ist es, dass es nur eine einzige controller
Methode(gleiche URL), die verwendet werden sollte, die von der JSP-Seite, Iphone/Andois app.

Ich bin mit Feder form-tag für die Objekt-Bindung von JSP-controller mit Hilfe von @ModelAttribute wie unten.

@RequestMapping(value = "reset-password", method = RequestMethod.POST)
public ModelAndView resetPassword(@ModelAttributeForgot forgotPassword,
     HttpServletRequest request) { 

     System.out.println("data recived=="+forgotPassword.getNewPassword());
 }

Aber der ist NICHT der Fall, wenn die Daten, die gebucht wird, aus der iPhone/Android app, und das Ergebnis ist:

Daten recived==null;

So, um dieses problem zu überwinden, das ich verwendet habe @RequestBody Anmerkung am Ort der @ModelAttribute.

Also mein controller sieht wie folgt aus:

@RequestMapping(value = "reset-password", method = RequestMethod.POST)
public ModelAndView resetPassword(@RequestBody Forgot forgotPassword,
    HttpServletRequest request) { 

    System.out.println("data recived=="+forgotPassword.getNewPassword());
}

Funktioniert es dann und das Ergebnis, die ich habe ist:

Daten recived==somedata;

Aber @RequestBody dann nicht funktionieren mit Feder-form auf der JSP-Seite und die Daten nicht umgewandelt in das Objekt und ich habe null Werte.

  1. Kann ich nicht @RequestBody Kommentar zu post-Daten in form von JSON
    mit Feder form-tag aus der JSP-Seite??
  2. Gibt es eine Möglichkeit, mit denen kann ich post Daten von meinem JSP-form als
    auch von der I-phone-App mithilfe von nur einer einzigen controller-Methode(entweder @ModelAttribute oder @RequestBody).

EDIT:

Beim schreiben String im Ort der Bean-Klasse, ich bin in der Lage, die Inhalte in form von reinem text, wie folgt:

@RequestMapping(value = "reset-password", method = RequestMethod.POST)
public ModelAndView resetPassword(@RequestBody String string,
     HttpServletRequest request) { }

Ergebnis von der web-Seite aufrufen:

uid=11&confirmPassword=somepassword&newPassword=somepassword

Ergebnis vom iPhone über die web-service-Aufruf(in **JSON)**

{"newPassword":"somepassword","confirmPassword":"somepassword","uid":"11"}

Aber das problem ist, dass mit diesem Ansatz habe ich den JSON-string Parsen in Java-Objekt manuell. Und in der web-Seite Inhalte, die ich finden müssen, um die Werte manuell ein, die ich nicht will.

Bitte helfen.

Grüße,

Arun Kumar

InformationsquelleAutor Arun Kumar | 2012-11-05
Schreibe einen Kommentar