Ich habe eine kleine Frage in Bezug auf Spring MVC Datenbindung Fähigkeiten. Ich habe folgende Controller-Klasse:Wie wird ein Endpunkt in Spring konfiguriert, um sowohl Formulardaten als auch den XML-Anfragetext zu akzeptieren?
@Controller
@RequestMapping("/foo")
public class FooController() {
// … some init stuff //
@RequestMapping(value = "/{id}/edit.{format}", method = RequestMethod.POST)
public ModelAndView editFoo(@RequestBody FooItem foo, @PathVariable("format") String format) {
// some code here to edit the FooItem //
}
}
Ich möchte in der Lage, Formulardaten sowie XML gegen diese Methode zu schreiben. Damit das funktioniert, habe ich zwei Nachrichtenkonverter zu meinem applicationContext.xml
hinzugefügt: Der Standard formHttpMessageConverter
und ein XStream Marshaller.
Das funktioniert gut, aber ich habe ein Problem, dass, wenn ich @RequestBody
verwenden und Formulardaten gegen die URL, der Server antwortet mit einem 415 Fehler. Wenn ich diese Annotation entferne, funktionieren die Formulardaten gut und Spring erstellt das Objekt für mich, aber wenn ich XML dagegen poste, erhalte ich ein leeres Objekt.
Gibt es einen Weg um dies oder muss ich 2 Methoden haben, um beide eingehenden Formate verarbeiten zu können?
Vielen Dank im Voraus!
Wie posten Sie Formulardaten? Sind Sie sicher, dass die Anfrage einen Header "Content-Type: application/x-www-form-urlencoded" hat? – axtavt
Daten werden mit Standard-HTML-Formular, so die Content-Type-Header zeigt "application/x-www-form-urlencoded" – Markus