Spring MVC 415 Type de support non pris en charge
Je suis à l'aide de Printemps 3.2 et essayez d'utiliser ajax requête post pour présenter un tableau d'objets json. Si cela est pertinent, j'ai échappé à tous les caractères spéciaux.
Je reçois un Statut HTTP de 415.
Mon contrôleur est:
@RequestMapping(value = "/save-profile", method = RequestMethod.POST,consumes="application/json")
public @ResponseBody String saveProfileJson(@RequestBody String[] profileCheckedValues){
System.out.println(profileCheckedValues.length);
return "success";
}
jquery est:
jQuery("#save").click(function () {
var profileCheckedValues = [];
jQuery.each(jQuery(".jsonCheck:checked"), function () {
profileCheckedValues.push($(this).val());
});
if (profileCheckedValues.length != 0) {
jQuery("body").addClass("loading");
jQuery.ajax({
type: "POST",
contentType: "application/json",
url: contextPath + "/sample/save-profile",
data: "profileCheckedValues="+escape(profileCheckedValues),
dataType: 'json',
timeout: 600000,
success: function (data) {
jQuery('body').removeClass("loading");
},
error: function (e) {
console.log("ERROR: ", e);
jQuery('body').removeClass("loading");
}
});
}
});
et un exemple de l'un des objets de la matrice je suis l'affichage est le suivant json:
{
"id": "534213341",
"name": "Jack Lindamood",
"first_name": "Jack",
"last_name": "Lindamood",
"link": "https://www.facebook.com/jack",
"username": "jack",
"gender": "male",
"locale": "en_US",
"updated_time": "2013-07-23T21:13:23+0000"
}
L'erreur est:
The server refused this request because the request entity is in a format not supported by the requested resource for the requested method
Pourquoi est-ce une erreur se - personne ne sait?
source d'informationauteur jackyesind | 2013-08-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer avec les
HttpServletRequest
. il n'a pas de problèmeVous aurez besoin d'ajouter jackson et jackson-databind au classpath. Le printemps va le ramasser à l'aide de c'est
MappingJacksonHttpMessageConverter
MappingJacksonHttpMessageConverter
1) Ajouter les dépendances suivantes
2) Si vous utilisez @RequestBody annotation dans la méthode du contrôleur assurez-vous d'avoir ajouté à la suite dans le fichier xml
Cela devrait résoudre le 415 code de statut de la question.
J'avais
consume="application/json"
dans ma demande de configuration du mappage qui s'attend à un json entrée. Lorsque j'ai envoyé une demande qui n'est pas un JSON entrée Printemps se sont plaints de la 415 non pris en charge Type de Média. Ainsi retirer leconsume="application/json"
a fonctionné pour moi. Donc sur la demande d'entrée et de l'accepter type de support dans votre Printemps contrôleur de la signature de la méthode. Une incompatibilité de jeter l'415 erreur. Ce sera probablement la raison pour laquelle la question.essayez de changer
json
àapplication/json
pour le type de données. Et que fait votre json ressembler est-il valide ? Je n'ai jamais vu json converti en Chaîne de caractères[] auparavant, donc c'coul dalso être le problème.J'ai eu le même problème. J'ai dû suivre ces étapes pour résoudre le problème:
1. Assurez-vous d'avoir les dépendances suivantes:
2. Créer le filtre suivant:
3. Appliquer ce filtre pour les demandes en web.xml
J'espère que ce sera utile à quelqu'un.
J'ai eu le même problème, j'ai juste mis les dessous de la ligne de code dans le spring-servlet.xml il était à la presque fin de ce fichier xml. Il a travaillé.
<mvc:annotation-driven />