2010-12-01 2 views
0

В настоящее время я использую весенний mvc, java и аннотации.Как получить объект из перенаправленного представления?

@RequestMapping(value = "/submitTask", method = RequestMethod.POST) 
public ModelAndView submitTask(HttpSession session, HttpServletRequest request) { 
     Map<String, Object> map = new HashMap<String, Object>(); 
     ModelAndView model = new ModelAndView(new RedirectView("home.html")); 
     map.put("email", request.getParameter("email")); 
     map.put("task",request.getParameter("task")); 
     map.put("error", request.getParameter("error")); 
     model.addObject("map", map); 
     return model; 
} 

@RequestMapping("/home") 
public ModelAndView home(HttpSession session, HttpServletRequest request) { 
    ModelAndView model = new ModelAndView("home"); 
    model.addObject("map", request.getParameter("map")); 
    return model; 
} 

Я не кажется, чтобы получить значение «карту» с помощью «request.getParameter (» карта «)», когда я переадресованы мой взгляд на home.html. как я могу получить его. Спасибо.

+0

В вашем методе submitTask, я думаю, вы забыли установить Object для сеанса: session.setAttribute («map», map); – 2010-12-01 10:42:14

+0

Это неполный вопрос. Расскажите, как вы запрашиваете? Что такое URL? и тому подобное. – 2010-12-01 11:05:50

ответ

1

Я верю, что проблема в том, что запрос HttpServletRequest, переданный методу «home», содержит параметры «map.email», «map.task», «map.error», но не «map».

1

Использование RedirectView заставляет браузер выдавать новый запрос, поэтому исходный запрос утерян.

Вам нужно что-то вроде флэш-памяти или области разговора. Я не знаю о их реализации, но check the google results.

Использование Spring webflow - способ обработки разговоров, но это слишком сложно для простой задачи.

В качестве временного решения можно использовать сеанс, а затем снимите его немедленно (что, по сути, что вспышка-сфера будет делать)

0

Изменение

new RedirectView("home.html") 

в

"forward:home.html" 

Перенаправление удалит все данные на стороне сервера, если не будет атрибут сеанса или бит, так как будет новый запрос, созданный со стороны клиента. Вперед передаст все на другой «метод» - атрибуты запроса не будут изменены, поэтому они будут доступны.

Смежные вопросы