404 не найден в AJAX после звонка - PullRequest
0 голосов
/ 02 ноября 2018

Я использую Spring MVC, и когда я делаю пост-вызов ajax, я получаю 404. Мой контроллер выглядит так:

@Controller
@RequestMapping("/mensaje")
public class MensajeController {

    public MensajeController() {
        super();
    }

    @ResponseBody
    @RequestMapping(value = "/prueba", method = RequestMethod.POST)
    public String prueba(@RequestParam("cuerpo") final String cuerpo) {
        String b = null;

        String a = null;

        return b;
    }
}

И вызов ajax так:

<script type='text/javascript'>
    $(document).ready(function() {      
        $("#save").click(function(e) {
            e.preventDefault();
            var myEditor = document.querySelector('#editor');
            var html = myEditor.children[0].innerHTML;

            $.ajax({
                    type : "POST",
                    url : "/Gestion-Practicas/mensaje/prueba",
                    dataType: "json",
                    contentType: 'application/json; charset=utf-8',
                    data: {'cuerpo': html},
                    async: false,
                    cache: false,
                    delay: 15,
                    success: function(data){
                        alert('success');
                    },
                    error: function (xhr) {
                        alert(xhr.responseText);
                    }
                });     
        });

    });
</script>

URL, откуда я делаю вызов ajax:

http://localhost:8080/Gestion-Practicas/mensaje/create.do

URL, который появляется в консоли Chrome после выполнения вызова ajax:

http://localhost:8080/Gestion-Practicas/mensaje/prueba

Подводя итог, вызов ajax никогда не достигает метода контроллера, и я не знаю, почему

1 Ответ

0 голосов
/ 02 ноября 2018

Вместо @RequestParam используйте @RequestBody

@RequestParam - используется для параметров запроса в URL-адресе запроса.

@RequestBody - Это полезная нагрузка тела сообщения.

Преобразуйте ваш String cuerpo в класс со свойством String cuerpo

public class PostBody{
  private String cuerpo;
  public String getCuerpo(){
    return this.cuerpo;
   }

   public void setCuerpo(String cuerpo){
     this.cuerpo = cuerpo;
   }
}

Теперь твоя линия public String prueba(@RequestParam("cuerpo") final String cuerpo)

Обновление будет выглядеть как public String prueba(@RequestBody final PostBody postBody).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...