2014-10-10 18 views
7

Uso Spring MVC e AngularJs per creare un'applicazione web. Invio una richiesta al server ma sto ottenendo 400 error bad request. Configuro il convertitore di messaggi per il formato JSON nel file di configurazione del servlet di Spring. Mi sto chiedendo perché sto ottenendo questo errore.Perché ricevo 400 richieste errate con il post di AngularJs?

Qui è il mio servizio angolare:

save : function(user) { 
    return $http({ 
     method: 'POST', 
     url: '/app-web/user/create', 
     contentType: "application/json", 
     data:user 
    }); 
} 

E sul lato server ho un MVC controller primavera come descritto di seguito:

@RequestMapping(value="/user/create", method= RequestMethod.POST) 
@ResponseBody 
public String createAccount(@RequestBody User user){ 
    //some logic 
    return "Ok"; 
} 

ho notato un'altra cosa: quando rimuovo il @RequestBody in il controller non ha un errore 400 ma l'utente è null:

@RequestMapping(value="/user/create", method= RequestMethod.POST) 
@ResponseBody 
public String createAccount(User user){ 
    //some logic 
    return "Ok"; 
} 
+0

L'oggetto "utente" che stai passando ha un valore o è nullo? – Losbear

+0

non riesco a raggiungere il controller MVC Spring. Nell'utente del controller Angularjs ha valore – Pracede

+0

Se si utilizza Chrome o IE e si aprono gli strumenti di sviluppo (F12) e si inserisce un punto di interruzione sulla riga "save: function (user) {". Eseguilo e quando il codice raggiunge il punto di interruzione, passa con il mouse su "utente". viene visualizzata una descrizione comando con il valore dell'oggetto su cui si passa il mouse. Dice nulla o ha un valore? Un'altra cosa da provare è guardare l'URL esatto a cui sta tentando di accedere (ancora utilizzando gli strumenti di sviluppo). L'URL esatto che sta tentando di accedere potrebbe essere diverso da quello che ti aspettavi. – Losbear

risposta

4

Il problema riguardava il modulo utente. Ho avuto cognome, nome, email, password, password1 ma l'oggetto utente Java non contiene gli attributi password1. Quando i dati JSON forniti dalla richiesta non corrispondono all'oggetto Java, JsonConverter non è in grado di associare i dati all'oggetto Java.

+0

Sono contento che l'abbia capito! – Losbear

+0

@Pracede Sto avendo lo stesso problema, input che mostra su firebug è {"id": null, "nome": "qweqweqwe", "users": {"id": 3, "username": "Kaminee", "password": "1234", "email": "kim @ mail .com "," address ":" bhumkar "," country ": {" countryId ": 1," countryName ":" India "}}} – Kamini

Problemi correlati