415 неподдерживаемый тип носителя при попытке отправить JSON в Spring MVC Controller

0

Когда я пытаюсь отправить JSON на Spring MVC Controller, я получил:

POST http://localhost:8084/springAndHibernate/greet 415 (Unsupported Media Type)

Вот объявление метода, который должен, поймать "JSON:

@RequestMapping(headers ={"Accept=application/json"},value="/greet")
public String greetUser(@RequestBody Logins newLogin){

Я думал, что он должен отображать JSON в класс Logins.java, который находится здесь:

package newpackage;

public class Logins  implements java.io.Serializable {


 private int id;
 private String login;
 private String password;

public Logins() {
}


public Logins(int id) {
    this.id = id;
}
public Logins(int id, String login, String password) {
   this.id = id;
   this.login = login;
   this.password = password;
}

public int getId() {
    return this.id;
}

public void setId(int id) {
    this.id = id;
}
public String getLogin() {
    return this.login;
}

public void setLogin(String login) {
    this.login = login;
}
public String getPassword() {
    return this.password;
}

public void setPassword(String password) {
    this.password = password;
}

}

Я отправляю POST с помощью метода jQuery ajax() следующим образом:

 function onGreetingButtonClicked(e){

                var contextPath='<%=request.getContextPath()%>';
                jsonData = {
                    id: 0,
                    login: $("#loginInput").val(),
                    password: $("#passwordInput").val()
                };
                console.log(JSON.stringify(jsonData));
                console.log((contextPath + "/greet").toString());
                urlAddress = (contextPath + "/greet")

                $.ajax({type: "POST",
                    url: urlAddress, 
                    data: JSON.stringify(jsonData),
                    success: onSuccess,
                    contentType: "application/jsonp; charset=utf-8",
                    dataType: null,
                    traditional: true});
                e.preventDefault();              
            }
            function onSuccess(data){
                alert(data);
            }

Когда я удаляю

@RequestBody

из метода нет ошибок, но затем я получаю объект Logins с нулевым значением в качестве значения поля.

Я был бы очень рад, если кто-то захочет помочь мне, спасибо заранее.

  • 0
    Начните с установки уровня журнала на DEBUG. Весна должна сказать вам, что пошло не так.
  • 0
    @Sotirios Sotirios Delimanolis, как я могу это сделать?
Теги:
spring
controller

1 ответ

1
Лучший ответ

На основе различных других сообщений вы должны установить для contentType значение "application/javascript".

Я также видел предложения использовать "application/json", но, глядя на страницу Википедии, ясно, что JSON-P на самом деле недействителен JSON, поэтому MIME-тип неверен, хотя некоторые браузеры, по-видимому, знают, как дело с ошибкой.

Во всяком случае, "application/jsonp" неверен, поскольку он не является зарегистрированным MIME-типом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню