В последнее время мне никто не отвечает, но я всё равно почему-то спрашиваю...
Привет, товарищи. По прежнему мусолю официальный пример на оф. сайте 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В последнее время мне никто не отвечает, но я всё равно почему-то спрашиваю...
палец вверх и принятый ответ гарантирую.
-_-
Комментариев нет:
Отправить комментарий