vista sirve recibir que parametros para mvc modelo controladores controlador arquitectura java spring-mvc restful-url

java - sirve - Controlador Spring MVC: redirigir sin agregar parámetros a mi url



recibir parametros spring (6)

Estoy intentando redirigir sin que se agreguen parámetros a mi URL.

@Controller ... public class SomeController { ... @RequestMapping("save/") public String doSave(...) { ... return "redirect:/success/"; } @RequestMapping("success/") public String doSuccess(...) { ... return "success"; }

Después de un redireccionamiento, mi URL siempre se ve así: .../success/?param1=xxx&param2=xxx . Como quiero que mis URL sean algo RESTful y nunca necesito los parámetros después de una redirección, no quiero que se agreguen a una redirección.

¿Alguna idea de cómo deshacerse de ellos?


Agregar el parámetro RedirectAttributes no funciona para mí (puede deberse a que HandlerInterceptorAdapter agrega algunas cosas al modelo), pero este enfoque sí lo hace (gracias al comment de @anynic):

@RequestMapping("save/") public View doSave(...) { ... RedirectView redirect = new RedirectView("/success/"); redirect.setExposeModelAttributes(false); return redirect; }


En Spring 3.1, una forma preferida de controlar este comportamiento es agregar un parámetro RedirectAttributes a su método:

@RequestMapping("save/") public String doSave(..., RedirectAttributes ra) { ... return "redirect:/success/"; }

Deshabilita la adición de atributos de forma predeterminada y le permite controlar qué atributos agregar de forma explícita.

En versiones anteriores de Spring, era más complicado.


En Spring 3.1, use la opción ignoreDefaultModelOnRedirect para deshabilitar automáticamente la adición de atributos del modelo a una redirección:

<mvc:annotation-driven ignoreDefaultModelOnRedirect="true" />


En Spring 4 hay una forma de hacer esto con java config, usando anotaciones. Lo estoy compartiendo en caso de que alguien lo necesite ya que lo necesitaba.

En la clase de configuración que extiende WebMvcConfigurerAdapter , debe agregar:

@Autowired private RequestMappingHandlerAdapter requestMappingHandlerAdapter; @PostConstruct public void init() { requestMappingHandlerAdapter.setIgnoreDefaultModelOnRedirect(true); }

Con esto, no necesita usar RedirectAttributes , y es un equivalente en la configuración de java a la respuesta de Matroskin .


Prueba esto:

public ModelAndView getRequest(HttpServletRequest req, Locale locale, Model model) { ***model.asMap().clear();*** // This clear parameters in url final ModelAndView mav = new ModelAndView("redirect:/test"); return mav; }