Каковы способы прохождения параметров из контроллера после перенаправления в spring mvc?

если я пишу в методе mycontroller:

return  "redirect:url";

Какие параметры будут переданы url (возможно, это метод управления или страница jsp)?

Ответы

Ответ 1

С помощью RedirectAttributes вы можете передавать почти любые данные на URL-адрес переадресации:

@RequestMapping(value="/someURL", method=GET)
public String yourMethod(RedirectAttributes redirectAttributes)
{
   ...
   redirectAttributes.addAttribute("rd", "rdValue");
   redirectAttributes.addFlashAttribute("fa", faValue);
   return "redirect:/someOtherURL";
}

При использовании addAttribute для добавления атрибутов это будет отображаться в целевом URL-адресе перенаправления. Эти атрибуты используются для создания параметров запроса, и клиент (браузер) отправляет новый запрос в redirect URL с этими параметрами. При этом вы можете использовать String или примитивы в качестве атрибутов перенаправления.

И когда вы используете addFlashAttribute, эти атрибуты сохраняются временно перед перенаправлением (обычно в сеансе) и доступны для запроса после перенаправления и немедленно удаляются. Преимущество использования flashAttributes заключается в том, что вы можете добавить любой объект в качестве атрибута flash (поскольку он хранится в сеансе).

Ответ 2

Кроме того, вы можете добавить свои параметры непосредственно в возвращаемую строку. Вот как:

@Controller
@RequestMapping("/control")
public class SomeController {

    @RequestMapping(value = "/some-url")
    public String someUrl() {

        String param = "value";
        return "redirect:some-other-url?rp=" + param;
    }

    @RequestMapping(value = "/some-other-url")
    public String someOtherUrl(@RequestParam(value = "rp", required = false) String rp) {

        /*Your code*/
        return "view";
    }
}