Перенаправленный URL не отображается в браузере - PullRequest
0 голосов
/ 21 декабря 2018

Я вызываю представление одного контроллера из другого контроллера (скажем, 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 ]

0 голосов
/ 21 декабря 2018

Напишите другой обработчик в 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";
}
0 голосов
/ 21 декабря 2018

Что делает 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");
    }
}

Контроллер2:

@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>
...