¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo redirigir correctamente una URL en Java con Spring Framework

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 67 Vistas
0
Cargando...

Usamos 5.2.0.6. Tengo un controlador con mapeo de asterisco que tiene un método que detecta la ruta de redirección. Aquí:

 @RequestMapping(value = "/**/t")
 public class TopCategoryPageController extends AbstractSearchPageController
 {
 ...
     //@ResponseStatus(HttpStatus.MOVED_PERMANENTLY/* this is 301 */)
     @RequestMapping(value = TOP_CATEGORY_CODE_PATH_VARIABLE_PATTERN, method = RequestMethod.GET)
     public String topCategory(@PathVariable("categoryCode") final String categoryCode, final Model model,
             final HttpServletRequest request, final HttpServletResponse response)
                     throws UnsupportedEncodingException, CMSItemNotFoundException
     {
     ...
     if any redirection 
     {
         response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
         return redirection;
     }   
     else
     return getViewForPage(categoryCode);
 }

Cuando llega la solicitud, ejecuta primero el método topCategory anterior

Además, hay un interceptor como el siguiente. Se ejecuta después del método topCategory como se espera. Aunque intenté insertar el estado 301 allí, no pude obtener lo que quería.

Aquí:

 public class BeforeViewHandlerInterceptor extends HandlerInterceptorAdapter
 {
     ...
     public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler,
             final ModelAndView modelAndView) throws Exception
     {
     ...
             if (isRedirectView(modelAndView))
         {
             String uri = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
                     + request.getContextPath();
             uri += modelAndView.getViewName().substring(modelAndView.getViewName().indexOf
            
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola,

Creo que el problema relacionado con https se debe a que tu PDP no está permitido para ejecutarse a través de https, por lo que la seguridad de Spring está redirigiendo con un 302. Si ese es el problema, deberías anular ChannelProcessingFilter o permitir que PDP se ejecute a través de https.

Saludos

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Muchas gracias! Si inserto este fragmento de código en el controlador en lugar del interceptor, funciona correctamente. Ahora, tengo un problema más. Cuando edito la misma URL en el navegador como *** https://*** redirige 302. ¿Dónde debo buscar para resolver este problema?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias por tu respuesta. Pero ya he intentado eso en el método postHandle de la clase BeforeViewHandlerInterceptor. De hecho, he intentado muchas cosas relacionadas con la respuesta en aquí Saludos

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Cambia el retorno del método a ModelAndView y haz algo como esto:

 RedirectView rv = new RedirectView("thePathYouWantToRedirect");
 rv.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
 rv.setUrl(rv.getUrl());
 return new ModelAndView(rv);

Espero que esto te sea útil

Saludos

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?