Перенаправленный URL не отображается в браузере
Я вызываю представление одного контроллера от другого контроллера (скажем, controller1 и controller2 соответственно). И он успешно работает, но браузер показывает URL-адрес controller1, хотя я перенаправлен на controller2. Как это изменить?
@Controller
@SessionAttributes
public class UserFormController {
@Autowired
private UserService userService;
@Autowired
private Controller2 controller2;
@RequestMapping(value = "/method1", method = RequestMethod.GET)
public ModelAndView redirectFormPage() {
return controller2.redirectMethod();
}
здесь, URL "method1" показывает. Я хочу показать названный URL.
2 ответа
Что делает controller2.redirectMethod()?
Вместо того, чтобы вызывать метод непосредственно из контроллера, используйте это и поместите URL в redirectMethod (redirectURL)
return new ModelAndView("redirect:/redirectURL");
или же
return "redirect:/redirectURL"
зависит от того, что вы возвращаете
В вашем случае это будет относиться как к обычному методу.
Контроллер 1:
@Controller
@RequestMapping("/")
public class Controller11 {
@RequestMapping("/method1")
public String method1(Model model) {
return "redirect:/method2";
// If method return ModelAndView
// return new ModelAndView("redirect:/method2");
}
}
Controller2:
@Controller
public class Controller22 {
@RequestMapping("/method2")
public String method1(Model model) {
model.addAttribute("method", "method2");
return "method";
//If method return ModelAndView
// model.addAttribute("method", "method2");
// return new ModelAndView("method");
}
}
Посмотреть:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Method1</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Method, ' + ${method} + '!'" />
</body>
</html>
Написать другой обработчик в Controller2
который позвонит redirectMethod()
,
В Controller2
:
@RequestMapping(value = "/redirectFromUser", method = RequestMethod.GET)
public ModelAndView handleRedirectionFromUser() {
return redirectMethod();
}
И в UserFormController
:
@RequestMapping(value = "/method1", method = RequestMethod.GET)
public String redirectFormPage() {
return "redirect:/url/to/redirectFromUser";
}