#spring_mvc #spring #java #redirect
В последнее время мне никто не отвечает, но я всё равно почему-то спрашиваю... Привет, товарищи. По прежнему мусолю официальный пример на оф. сайте 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. Спасибо тем, кто доскроллил вопрос до конца, надеюсь получить ответ, палец вверх и принятый ответ гарантирую.
Ответы
Ответ 1
может и здесь сессии использовать? Ну а как еще? Это же по факту состояние, которое надо сбрасывать после первого показа. Ну куки еще разве что. Вордпресс, конечно, живет себе гет-параметрами, но он вордпресс. Вообще эта штука называется flash messages, единственная проблема будет со списками, когда надо по одному ключу забить кучу сообщений https://stackoverflow.com/questions/11881720/multiple-flash-messages-in-spring-mvcВ последнее время мне никто не отвечает, но я всё равно почему-то спрашиваю...палец вверх и принятый ответ гарантирую. -_-
Комментариев нет:
Отправить комментарий