Редирект в контроллерах spring3 - PullRequest
6 голосов
/ 22 февраля 2011

В Spring 3 вы отображаете URL-адреса так же просто, как это:

@RequestMapping(value = "/index.html", method = RequestMethod.GET)
public String index(Model model)  {
    return "index";
}

Можно ли сделать такой метод для своего рода перенаправления на другой URL-адрес, например:

@RequestMapping(value = "/index.html", method = RequestMethod.GET)
public String index(Model model)  {
    return "second.html";
}

@RequestMapping(value = "/second.html", method = RequestMethod.GET)
public String second(Model model)  {
//put some staff in model
    return "second";
}

Ответы [ 2 ]

15 голосов
/ 22 февраля 2011

Вам не нужно перенаправлять - просто вызовите метод:

@RequestMapping(value = "/index.html", method = RequestMethod.GET)
public String index(Model model)  {
    return second(model);
}

@RequestMapping(value = "/second.html", method = RequestMethod.GET)
public String second(Model model)  {
    //put some staff in model
    return "second";
}

Это одна из приятных вещей в стиле аннотации;Вы можете просто соединить свои методы вместе.

Если вы действительно хотите перенаправить, то вы можете вернуть это как представление:

@RequestMapping(value = "/index.html", method = RequestMethod.GET)
public View index(Model model)  {
    return new RedirectView("second.html");
}

@RequestMapping(value = "/second.html", method = RequestMethod.GET)
public String second(Model model)  {
    //put some staff in model
    return "second";
}
6 голосов
/ 22 февраля 2011

Да, редирект будет работать. В методе индекса измените последнюю строку на return "redirect:/second.html" ;

Редактировать требуется контекстный путь и отображение контроллера. Если DispatcherServlet сопоставлен с / ABC, а сопоставление запроса для контроллера - / XYZ, вам нужно будет написать:
return "redirect:/ABC/XYZ/second.html";

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