J'ai une petite question concernant les capacités de liaison de données MVC de Spring. j'ai la classe suivante:Comment configurer un point de terminaison dans Spring pour accepter à la fois les données de formulaire et le corps de requête XML?
@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 //
}
}
Je veux être en mesure d'afficher des données de formulaire ainsi que XML par rapport à cette méthode. Pour que cela fonctionne, j'ai ajouté deux convertisseurs de messages à mon applicationContext.xml
: Le formHttpMessageConverter
par défaut et un marshaller XStream.
Cela fonctionne très bien, mais j'ai un problème, que si j'utilise @RequestBody
et publie des données de formulaire contre l'URL, le serveur répond avec une erreur 415. Si je supprime cette annotation, les données de formulaire fonctionnent bien et Spring crée l'objet pour moi, mais si je publie du XML par rapport à celui-ci, j'obtiens un objet vide.
Y at-il un moyen de contourner cela ou dois-je avoir 2 méthodes pour être en mesure de gérer les deux formats entrants?
Merci d'avance!
Comment affichez-vous des données de formulaire? Êtes-vous sûr que cette requête a un en-tête Content-Type: application/x-www-form-urlencoded'? – axtavt
Les données sont affichées avec un formulaire HTML standard. L'en-tête Content-Type affiche "application/x-www-form-urlencoded" – Markus