Ошибка при отправке JSON пакета с jQuery на Java Spring RestController

101
19 октября 2019, 13:50

При отправки JSON пакета с отдельного HTML файла на Java Spring RestController при помощи jQuery, java выдает предупреждение :

Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

При этом все MediaType указаны.

Chrom выдает еще 2 ошибки:

POST http://localhost/post 415

и

Access to XMLHttpRequest at 'http://localhost/post' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Код контроллера:

@RestController
public class mainController {
@RequestMapping(value = "/post", method = RequestMethod.POST,
        consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
        produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public ResponseEntity<Object> postUser(@RequestBody User user){
System.out.println(user);
return new ResponseEntity<>("Success", HttpStatus.OK);
}
}

Код jQery:

$(document).ready(function() {
  $('#go').on('click', function() {
var user = {
    "name" : "Tom",
    "age" : 23
};
$.ajax({
    url: 'http://localhost/post',
    type: 'POST',
    dataType: 'json',
    data: user
})
.done(function() {
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});

  });
});

Огромная просьба подсказать где ошибка и как решить подобную проблему?

P.S. Т.К. опыта у меня маловато просьба сказать как пишутся подобные приложения, а именно сперва Backend и потом при помощи Thymeleaf или Mustache шаблонов Front, или же Frontend совсем пишется отдельно как у меня?

Answer 1
$.ajax({
    type: 'POST',
    url: "http://localhost/post",
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(user),
    dataType: 'json',
    async: true
});
Answer 2

Всем спасибо, разобрался. Надо было поднять HTTP сервер чтобы не было блокировки CORS и подправить MediaType, а именно оставил только produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}.

READ ALSO
Java Hibernate PersistenceBag

Java Hibernate PersistenceBag

Как заставить хибер возвращать не PersistenceBag, а list или set?

117
Коррекция данных в TextField

Коррекция данных в TextField

Мне требуется корректировать данные в некотором TextField непосредственно в процессе вводаЧего конкретно я пытаюсь достичь:

91
Выполнение системных команд из-под Java (Runtime.exec)

Выполнение системных команд из-под Java (Runtime.exec)

Нуждаюсь в пояснении синтаксиса "системных команд" для параметра метода exec()

95
Hibernate: колонка не мапится на геттер

Hibernate: колонка не мапится на геттер

Написал самый обычный класс-сущность и столкнулся с проблемой

120