2017-04-05 4 views
2

Je suis nouveau à Spring MVC, je construis un avec angularjs et Spring Boot.Angularjs Post appel à la botte à ressort

Lorsque j'ai essayé de faire un appel POST à ​​travers angularjs, j'obtiens cette erreur. Mais quand j'ai essayé avec le facteur, il travaille avec x-www-form-urlencoded mais avec des données de formulaire je reçois l'erreur ci-dessous.

Message Man erreur

{ 
 
    "timestamp": 1491406541851, 
 
    "status": 500, 
 
    "error": "Internal Server Error", 
 
    "exception": "org.springframework.dao.DataIntegrityViolationException", 
 
    "message": "PreparedStatementCallback; SQL [INSERT INTO employeedetails(Name, Company, Location,Age) VALUES (?,?,?,?)]; Column 'Name' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'Name' cannot be null", 
 
    "path": "/createEmployee" 
 
}

appel HTTP dans AngularJS

$http({ 
 
\t \t  method: 'POST', 
 
\t \t  url: "/createEmployee", 
 
\t \t  headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
 
\t \t  data: $scope.employee, 
 
\t \t }).success(function() {});

\t 
 
\t @RequestMapping(value="/createEmployee", method=RequestMethod.POST,consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) 
 
\t public void createEmployee(employeeDetails empl) 
 
\t { 
 
\t \t System.out.println(empl.getAge()); 
 
\t \t empdao.createEmployee(empl); 
 
\t }

+0

Parce que dans votre ressort api vous acceptez type de média 'application/x-www-form-urlencoded' et non 'sous forme de données'. Si vous souhaitez l'envoyer en tant que données de formulaire, vous devez modifier votre API de printemps. – kaushlendras

+0

pouvez-vous me donner le code à modifier –

+0

Dans quel type, vous voulez envoyer des données ?? 'application/x-www-form-urlencoded' ou 'formulaire-données' ?? – kaushlendras

Répondre

0
@RequestMapping(value="/createEmployee", method=RequestMethod.POST,consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) 
public void createEmployee(@RequestBody @Valid employeeDetails empl) 
{ 
    System.out.println(empl.getAge()); 
    empdao.createEmployee(empl); 
} 
+0

S'il vous plaît modifier votre réponse pour inclure une explication. Les réponses au code seulement font très peu pour éduquer les futurs lecteurs de SO. Votre réponse peut se retrouver dans la file d'attente de modération pour être de mauvaise qualité. – Jens