Passer un objet de javascript à spring controller
achrefBIG
Messages postés
40
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour, Je bloque sur un porblème depuis longtemps, mon objectif c'est de passer un objet de javascript à un controleur spring, mais j'obtiens toujours une erreur : There was an unexpected error (type=Bad Request, status=400).
Required request body is missing: public java.lang.String PersonController.addPerson(.entities.Person)
Voici le code en javascript:
et voici mon contrôleur
Required request body is missing: public java.lang.String PersonController.addPerson(.entities.Person)
Voici le code en javascript:
<script>
var person = {"name":"John"};
$.ajax({
url:"http://localhost:8080/abc/addPerson",
type: 'POST',
data: person,
dataType: "html",
contentType: 'application/json',
mimeType: 'application/json',
success: function(data){
console.log(data);
return false;
}
});
</script>
et voici mon contrôleur
@Controller
@RequestMapping("/abc")
public class PersonController {
@RequestMapping(value = "/addPerson", method = { RequestMethod.GET, RequestMethod.POST })
public @ResponseBody String addPerson(@RequestBody Person person) {
System.out.println(person.getName());
return "Successfully added person";
}
}
Configuration: Windows / Chrome 90.0.4430.85
1 réponse
-
Bonjour,
Je t'invite à regarder cet article : https://forums.commentcamarche.net/forum/affich-37598446-implementation-d-une-architecture-multi-tiers-avec-spring
Et le code associé : https://codes-sources.commentcamarche.net/source/103029-implementation-d-une-architecture-multi-tiers-en-jee-avec-spring
C'est un projet de base qui fonctionne que tu peux modifier progressivement pour arriver à tes fins sans subir tous les écueils de tout faire de zéro.
Un petit focus sur le code JS :function addUser(){ var user = '{' + '"firstName":"' + document.getElementById("addUser_firstName").value + '", "lastName":"' + document.getElementById("addUser_lastName").value + '", "street":"' + document.getElementById("addUser_street").value + '", "postCode":"' + document.getElementById("addUser_postCode").value + '", "city":"' + document.getElementById("addUser_city").value + '"}'; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ document.getElementById("addUser_iframe").srcdoc = this.responseText; document.getElementById("allUsers_iframe").contentWindow.location.reload(); } xhr.open('POST', '/users/new', true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(user); return false; }
Et le code Spring correspondant :@RestController public interface UserWebService { @GetMapping("/users/all") public List<UserDto> getAllUsers(); @PostMapping("/users/new") public UserDto postUser(@RequestBody UserDto user); }@Data public class UserDto { private Long id; private String firstName; private String lastName; private String street; private String postCode; private String city; }