GET Request - Перенаправить на другую страницу и сохранить параметры - PullRequest
0 голосов
/ 11 марта 2020

Я создаю приложение с помощью Spring MVC и хочу перенаправить на другой URL, но хочу сохранить параметр.

Это то, что у меня есть в контроллере:

@RequestMapping(value = "/users/", method = RequestMethod.GET)
public String redirect(
    @RequestParam(value = "name") String name,
    @RequestParam(value = "surname") String name,
    RedirectAttributes redirectAttributes
) {
    redirectAttributes.addFlashAttribute("surname", surname);
    return String.format("redirect:/users/name/%s", name);
}

@RequestMapping(value = "/users/name/{name}", method = RequestMethod.GET)
public String view(
    @PathVariable("name") String name,
    Model model,
    @RequestParam(value = "surname") String surname
) {
  ...
}

Например, когда я нажимаю /users/?name=mark&surname=williams, я хочу, чтобы меня перенаправили на users/name/mark?surname=williams

Однако меня перенаправляют, но параметры исчезают. Если я установлю блокировщик в Intellij, я вижу, что он получает параметры, но они не отображаются.

1 Ответ

0 голосов
/ 11 марта 2020

Вы можете добиться того же, используя HttpServletResponse.sendRedirect ():

@RequestMapping(value = "/users/", method = RequestMethod.GET)
public String redirect(
    @RequestParam(value = "name") String name,
    @RequestParam(value = "surname") String surname,
    HttpServletResponse httpResponse
) throws IOException {
    httpResponse.sendRedirect("/CONTEXT-ROOT/users/name/"+ name+"?surname="+surname);
}

@RequestMapping(value = "/users/name/{name}", method = RequestMethod.GET)
@ResponseBody
public String view(
    @PathVariable("name") String name,
    @RequestParam(value = "surname") String surname
) {
  System.out.println("surname="+surname);
  return "{\"response\":\"ok\"}";
}

Чтобы сделать перенаправление: работа, вам может потребоваться добавить UrlBasedViewResolver.

Проверьте этот вопрос: Перенаправление с одного метода контроллера на другой метод контроллера

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