J'utilisant ajax et mvc de printemps dans mes utilisateurs application.When clique bouton Enregistrer, ci-dessous codes ne fonctionnent pas dans ma classe de contrôleur appelé UserController:demande Ajax Post Spring MVC
@RequestMapping(value = "/registration", method = RequestMethod.GET)
public ModelAndView registrationPage() {
ModelAndView model = new ModelAndView();
model.setViewName("registration");
return model;
}
la page d'inscription (inscription. jsp) contient un formulaire. J'ai utiliser la requête ajax dans cette page. Ci-dessous le jquery code ajax:
function ajaxPostForUsername() {
var contextPath = "<%= request.getContextPath()%>";
var username = $('#userName').val();
$.ajax({
type: 'POST',
url: contextPath + "/registration",
data: {username: username},
dataType: 'json',
contentType : "application/json",
success: function(response) {
console.log(response);
if (response == "USER_EXIST") {
$('.username-message').html("Username is exist.Please enter another!").css('color', 'red')
}
else {
$('.username-message').html("Valid username").css('color', 'green');
}
}
})
}
et l'utilisation est sous la forme:
<input type="text" id="userName" name="userName" placeholder="User Name" onblur="ajaxPostForUsername()" class="form-control" autofocus>
Dans le contrôleur appelé RegistrationController:
@RequestMapping(value = "/registration", method = RequestMethod.POST)
@ResponseBody
public String validateUsername(@RequestBody String username) {
String jsonData = "USER_NOT_EXIST";
if (userService.isUsernameExist(username)) {
jsonData = "USER_EXIST";
}
return jsonData;
}
comme ce. J'ai ajouté les dépendances jackson dans mon pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
Alors, quand j'écris un nom dans le champ de nom d'utilisateur, la réponse est:
HTTP Status 405 - Request method 'POST' not supported
et la console java montre:
WARNING: Handler execution resulted in exception: Request method 'POST' not supported.
Il semble que la requête fonctionne correctement, comme vous pouvez le voir sur l'image. Request-Response
Je l'ai cherché mais je n'ai pas pu le résoudre.Quelqu'un peut-il me dire quel est le problème? (PS: j'utiliser la sécurité du printemps et a ajouté dans ma forme <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
)