У меня есть приложения SpringMVC / Thymeleaf, где следующая обработка Ajax работает отлично, если я возвращаю boolean
.Однако, как только метод void
, я получаю ошибку Unexpected end of JSON input
в Firebug.Это запрос POST.
@ResponseBody
@PostMapping("/addOrUpdate")
public void /*boolean works!*/ addOrUpdate(@RequestBody String json) throws Exception {
service.addOrUpdateUserRoles(json);
/*boolean works - return true;*/
}
JS
$.ajax({
type : "post",
dataType : 'json',
contentType : 'text/plain',
url : 'addOrUpdate',
data : id
})
.then(function() {
//...
})
.fail(function(jqXHR, textStatus, errorThrown) {
//...
});
Если я просто удалю @ResponseBody
из определения метода, Thymeleaf жалуется, org.thymeleaf.exceptions.TemplateInputException: Error resolving template [addOrUpdate], template might not exist or might not be accessible by any of the configured Template Resolvers
Iпоследовал ResponseEntity
пример здесь , но это не помогло - та же ошибка, JS переходит в раздел «Ошибка» с неожиданным концом ввода.
@ResponseBody
@PostMapping("/addOrUpdate")
public ResponseEntity addOrUpdate(@RequestBody String json) throws Exception {
service.addOrUpdate(json);
return new ResponseEntity(HttpStatus.OK);
}