Весеннее перенаправление: проблема с префиксом

У меня есть приложение, использующее Spring 3. У меня есть преобразователь представлений, который строит представления на основе строки. Итак, в моих контроллерах у меня есть такие методы.

@RequestMapping(...)
public String method(){
  //Some proccessing
  return "tiles:tileName"
}

Мне нужно вернуть RedirectView, чтобы решить дублирующую отправку из-за обновления страницы в браузере, поэтому я подумал использовать Spring redirect: prefix. Проблема в том, что он перенаправляет только тогда, когда я использую URL-адрес, меняющий префикс (не с именем, которое может понять преобразователь). Я хотел сделать что-то вроде этого:

@RequestMapping(...)
public String method(){
  //Some proccessing
  return "redirect:tiles:tileName"
}

Есть ли способ использовать RedirectView со строкой (разрешимое имя представления), которую я получаю из каждого метода контроллера?

Спасибо


person Javi    schedule 13.04.2010    source источник


Ответы (1)


вызов с префиксом перенаправления: это URL-адрес, который отправляется в стандартном браузере 302 перенаправления. вы не можете перенаправить на представление, потому что представление не является URL-адресом. вместо этого вам понадобится новое сопоставление сервлета с представлением «успех», а затем вместо этого перенаправить на него

@RequestMapping("processing.htm")
public String method(){
  //Some proccessing
  return "redirect:success.htm"
}

@RequestMapping("success.htm")
public String method(){
  return "tiles:tileName"
}

этот случай отлично работает, когда вам просто нужно показать страницу «спасибо», которая не требует никаких конкретных данных от этапа обработки. однако, если ваша страница успеха должна отображать некоторую информацию об обработке, есть 2 способа сделать это.

1) передать информацию в URL-адресе в виде поста получения ("redirect:success.htm?message=hi"). это невероятно взломано, и поэтому крайне не рекомендуется.

2) лучший способ - хранить информацию в сеансе http, используя @SessionAttributes и @ModelAttribute

person chris    schedule 13.04.2010