Я заметил, что следующий код перенаправляет пользователя на URL-адрес внутри проекта,
@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm,
BindingResult result, ModelMap model)
{
String redirectUrl = "yahoo.com";
return "redirect:" + redirectUrl;
}
тогда как следующее перенаправляется правильно, как задумано, но требует http: // или https: //
@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm,
BindingResult result, ModelMap model)
{
String redirectUrl = "http://www.yahoo.com";
return "redirect:" + redirectUrl;
}
Я хочу, чтобы перенаправление всегда перенаправлялось на указанный URL-адрес, независимо от того, есть ли в нем действительный протокол или нет, и не хочу перенаправлять на представление. Как я могу это сделать?
Спасибо,
java
spring
jsp
spring-mvc
Джейк
источник
источник
@ResponseStatus(HttpStatus.FOUND)
Вы можете использовать расширение
RedirectView
. Скопировано из JavaDoc :Пример:
Вы также можете использовать
ResponseEntity
, например,И, конечно же, возвращение, о
redirect:http://www.yahoo.com
чем говорили другие.источник
Если посмотреть на фактическую реализацию UrlBasedViewResolver и RedirectView, перенаправление всегда будет contextRelative, если ваша цель перенаправления начинается с /. Таким образом, отправка //yahoo.com/path/to/resource не поможет получить относительное перенаправление протокола.
Итак, чтобы добиться того, что вы пытаетесь сделать, вы можете сделать что-то вроде:
источник
Другой способ сделать это - просто использовать
sendRedirect
метод:источник
Вы можете сделать это довольно кратко, используя
ResponseEntity
вот так:источник
У меня отлично работает:
источник
Для внешнего URL-адреса вы должны использовать « http://www.yahoo.com » в качестве URL-адреса перенаправления.
Это объясняется в префиксе redirect: справочной документации Spring.
будет перенаправлять относительно текущего контекста сервлета, в то время как имя, такое как
перенаправит на абсолютный URL
источник
Вы пробовали RedirectView, где можно указать параметр contextRelative?
источник
/
чтобы проверить, должен ли он относиться к контексту веб-приложения. Запрос на перенаправление по-прежнему будет для того же хоста.Короче
"redirect://yahoo.com"
одолжу тебеyahoo.com
.где как
"redirect:yahoo.com"
одолжит тоyour-context/yahoo.com
есть за экс-localhost:8080/yahoo.com
источник