¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como redirecionar corretamente uma URL em Java com o Spring Framework

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 11 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);
 }

Quando a solicitação chega, primeiro executa o método topCategory acima.

Além disso, há um interceptor como o seguinte. Ele é executado após o método topCategory como esperado. Embora eu tenha tentado inserir o status 301 lá, não consegui obter o que queria.

Aqui:

 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...

Olá,

Acredito que o problema relacionado com https se deve ao fato de que o seu PDP não está autorizado a ser executado através de https, fazendo com que a segurança do Spring redirecione com um 302. Se esse for o problema, você deve anular o ChannelProcessingFilter ou permitir que o PDP seja executado através de https.

Saudações

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

Muito obrigado! Se eu inserir este trecho de código no controlador em vez do interceptor, ele funciona corretamente. Agora, tenho mais um problema. Quando edito a mesma URL no navegador como *** https://*** redireciona 302. Onde devo procurar para resolver este problema?

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

Obrigado pela sua resposta. Mas eu já tentei isso no método postHandle da classe BeforeViewHandlerInterceptor. Na verdade, tentei muitas coisas relacionadas com a resposta em aqui Saudações

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

Olá,

Altere o retorno do método para ModelAndView e faça algo assim:

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

Espero que isso seja útil

Saudações

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?