Перенаправленный 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";
}
Другие вопросы по тегам