Spring Ajax controller - принимать заявки без обновления страницы - PullRequest
0 голосов
/ 13 января 2010

Я использую Starbox на моей странице Spring. Я хочу отправить рейтинг пользователя, чтобы сохранить его в базе данных и не обновлять страницу для пользователя. Как я могу иметь контроллер Spring, который принимает это значение и не должен возвращать новое представление. Мне не обязательно возвращать какой-либо обновленный html - если пользователь нажимает на Starbox, это все, что должно произойти.

Аналогичным образом, если у меня есть форма с кнопкой отправки и я хочу сохранить значения формы при отправке, но не обязательно отправлять пользователя на новую страницу, как я могу заставить контроллер это делать? Я не нашел хорошего учебника Spring AJAX - любые предложения были бы хорошими.

Ответы [ 2 ]

3 голосов
/ 13 января 2010

Если вы используете аннотации, возможно, более элегантный способ не возвращать представление - это объявить void метод возврата контроллера с @ResponseStatus(HttpStatus.OK) или @ResponseStatus(HttpStatus.NO_CONTENT) аннотациями.

Если вы используете Controller класс, вы можете просто вернуть null из handleRequest.

Чтобы отправить сообщение с контроллера на вызов AJAX, вы можете использовать соответствующие функции вашей библиотеки Javascript на стороне клиента (если она есть), например, post () и serialize () в jQuery.

0 голосов
/ 13 января 2010

Логика AJAX в браузере может просто игнорировать любые данные, которые сервер отправляет обратно, не должно иметь значения, чем он отвечает.

Но если вы действительно хотите удостовериться, что никакое тело ответа не отправлено обратно, то есть вещи, которые вы можете сделать. Если вы используете аннотированные контроллеры, вы можете дать Spring подсказку, что вы не хотите, чтобы он генерировал ответ, добавив параметр HttpServletResponse в метод @RequestMapping. Вам не нужно использовать ответ, но объявление его в качестве параметра говорит Spring «Я сам обрабатываю ответ», и ничего не будет отправлено обратно.


edit: OK, значит, вы используете старые контроллеры в стиле Spring 2.0. Если вы прочитаете javadoc на интерфейсе Controller , вы увидите, что на нем написано

@ возвращает ModelAndView для рендеринга или null если обрабатывается напрямую

Так что если вы не хотите визуализировать представление, просто верните null из вашего контроллера, и тело ответа не будет сгенерировано.

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