Аргументы Spring @RequestParam не передаются в метод POST

у меня проблема с весной и запросом post. Я настраиваю метод контроллера для вызова Ajax, см. определение метода ниже

@RequestMapping(value = "add.page", method = RequestMethod.POST)
@ResponseBody
public Object createComment(
        @RequestParam(value = "uuid", required = false) String entityUuid,
        @RequestParam(value = "type", required = false) String entityType,
        @RequestParam(value = "text", required = false) String text,
        HttpServletResponse response) {
        ....

независимо от того, каким образом я делаю вызов HTML, значения для @RequestParam параметры всегда имеют значение null. У меня есть много других методов, которые выглядят так, главное отличие в том, что другие методы GET, тогда как этот-POST. Невозможно ли использовать @RequestParam С методом POST?

Я использую Весна версия 3.0.7.RELEASE-кто-нибудь знает, в чем может быть причина проблемы?


код Ajax:

$.ajax({
    type:'POST',
    url:"/comments/add.page",
    data:{
        uuid:"${param.uuid}",
        type:"${param.type}",
        text:text
    },
    success:function (data) {
        //
    }
});

1 ответов


проблема оказалась в том, как я вызывал метод. Мой код ajax передавал все параметры в теле запроса, а не как параметры запроса, поэтому my @RequestParam параметры были пустыми. Я изменил свой код ajax на:

$.ajax({
    type: 'POST',
    url: "/comments/add.page?uuid=${param.uuid}&type=${param.type}",
    data: text,
    success: function (data) {
        //
    }
});

Я также изменил свой метод контроллера, чтобы взять текст из тела запроса:

@RequestMapping(value = "add.page", method = RequestMethod.POST)
@ResponseBody
public Object createComment(
        @RequestParam(value = "uuid", required = false) String entityUuid,
        @RequestParam(value = "type", required = false) String entityType,
        @RequestBody String text,
        HttpServletResponse response) {

и теперь я получаю параметры, как и ожидал.