Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Редирект в Spring MVC

В последнее время мне никто не отвечает, но я всё равно почему-то спрашиваю...
Привет, товарищи. По прежнему мусолю официальный пример на оф. сайте Spring, переписываю их код с помощью аннотаций. Там есть формочка, чтобы увеличить цену, вот такая:

По нажатии кнопки Execute цены на товар увеличиваются на заданный процент, и после этого пользователя перебрасывает на страницу со списком товаров. Вот их код, который это обслуживает:
public ModelAndView onSubmit(Object command) throws ServletException {
int increase = ((PriceIncrease) command).getPercentage(); logger.info("Increasing prices by " + increase + "%.");
productManager.increasePrice(increase);
logger.info("returning from PriceIncreaseForm view to " + getSuccessView());
return new ModelAndView(new RedirectView(getSuccessView())); }
Опустим работу с логированием, базой данных, остановимся только на возвращаемом методом значении. Моя задача - сделать так, чтобы после увеличения цен на странице с товарами появилось уведомление, мол, "цены успешно повышены", а при обновлении страницы пропало. Я пробовал так:
@RequestMapping(method = RequestMethod.POST) public ModelAndView post(Model model) { model.addAttribute("hello", "world"); return new ModelAndView(new RedirectView("/home.htm")); }
так:
@RequestMapping(method = RequestMethod.POST) public ModelAndView post(Model model) { return new ModelAndView("redirect:/home.htm").addObject("hello", "world"); }
так:
@RequestMapping(method = RequestMethod.POST) public ModelAndView post(Model model) { return new ModelAndView("redirect:/home.htm", "hello", "world"); }
так:
@RequestMapping(method = RequestMethod.POST) public View post(Model model) { model.addAttribute("hello","world"); return new RedirectView("/home.htm"); }
А ещё тут предлагают вызывать метод, отвечающий за страницу со списком товаров. Все мои попытки, представленные выше, передают мой hello=world в url, получается
http://localhost/home.htm?hello=world
Соответственно если я сделаю пометку таким образом, она никуда не денется после обновления страницы. Как мне быть? Может, есть какой-то способ передать в модель той страницы дополнительные атрибуты? На PHP я это делал с помощью $_SESSION, может, и здесь сессии использовать?
P. S. Спасибо тем, кто доскроллил вопрос до конца, надеюсь получить ответ, палец вверх и принятый ответ гарантирую.


Ответ

может и здесь сессии использовать?
Ну а как еще? Это же по факту состояние, которое надо сбрасывать после первого показа. Ну куки еще разве что. Вордпресс, конечно, живет себе гет-параметрами, но он вордпресс. Вообще эта штука называется flash messages, единственная проблема будет со списками, когда надо по одному ключу забить кучу сообщений https://stackoverflow.com/questions/11881720/multiple-flash-messages-in-spring-mvc
В последнее время мне никто не отвечает, но я всё равно почему-то спрашиваю... палец вверх и принятый ответ гарантирую.
-_-

Комментариев нет:

Отправить комментарий