Spring redirect: проблема с префиксом - PullRequest
0 голосов
/ 13 апреля 2010

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

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

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

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

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

Спасибо

1 Ответ

3 голосов
/ 14 апреля 2010

вызов с префиксом redirect: является URL-адресом, который отправляется в стандартном браузере 302 redirect. Вы не можете перенаправить на представление, потому что представление не является 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

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...