Я использую Spring-MVC 4.3.7 и пытаюсь отредактировать данные пользователя в JSP с помощью пост-запроса AJAX и сохранить результат в mySql.Форма находится в модале Bootstrap.
Я могу отправить данные формы в контроллер Spring (измененные данные пользователя печатаются в журнале сервера), но AJAX всегда показывает предупреждение об ошибке, и контроллер не обновляет данные пользователя вmySql.
<form id="editForm">
<div class="form-group">
<label for="editName">Name</label>
<input type="text" class="form-control" name="editName" id="editName" value="">
</div>
<div class="form-group">
<label for="editUsername">Username</label>
<input type="text" class="form-control" name="editUsername" id="editUsername" value="">
</div>
<div class="form-group">
<label for="editRole">Role</label>
<select id="editRole">
<option value="0">User</option>
<option value="1">Admin</option>
</select>
</div>
<div class="modal-footer">
<div class="btn-group btn-group-justified" role="group" aria-label="group button">
<div class="btn-group" role="group">
<button type="button" class="btn btn-
danger" data-dismiss="modal" role="button">Close</button>
</div>
<div class="btn-group" role="group">
<button type="submit" class="btn btn-
success btn-hover-green">Save</button>
</div>
</div>
</div>
</form>
$("#editForm").submit(function(event) {
// Prevent the form from submitting via the browser.
event.preventDefault();
// PREPARE FORM DATA
var formData = {
name: $("#editName").val(),
username: $("#editUsername").val(),
role: $("#editRole").val()
};
var dataJson = JSON.stringify(formData);
$.ajax({
type: "POST",
contentType: "application/json",
url: "../admin/editUser",
data: dataJson,
dataType: 'json',
success: function(data) {
alert("Success");
console.log(data);
},
error: function(e) {
alert("Error!");
console.log(e);
}
});
});
@Autowired
UserService userService;
@RequestMapping(value = "admin/editUser", method = RequestMethod.POST)
public @ResponseBody void handleEditUser(@RequestBody User cmd) {
try {
System.out.println(cmd.getName());
System.out.println(cmd + "done");
userService.updateUser(cmd);
} catch (DuplicateKeyException ex) {
ex.printStackTrace();
}
}
Я протестировал метод updateUser
и он работает нормально.
Я надеюсь, что кто-то может помочь мне с решением и объяснением моей проблемы,Я застрял на 2 дня с этой ошибкой, и я пробовал много разных решений, но я не могу заставить его работать.Спасибо!