El enrutamiento angular no funciona después de implementarlo en una aplicación Springboot

6

He creado una aplicación Springboot que incluye Angluar5. Tengo un script de compilación de gradle que carga los archivos angulares en mi proyecto springboot. Los archivos están en recursos / estáticos de mi proyecto springboot. Cuando inicio mi aplicación, el enrutamiento de angular ya no funciona y obtengo

Error: Cannot match any routes. URL Segment: 'access'

Mi estructura de proyecto:

ingrese la descripción de la imagen aquí

Implementé mi aplicación angular con la siguiente declaración:

ng build --deploy-url=BeatAcknowledgeTest --op=../backend/src/main/resources/static

Esto hará que mis archivos estáticos sean accesibles al siguiente enlace:

www.mySite.com/BeatAcknowledgeTest / ...

Si escribo

www.mySite.com/BeatAcknowledgeTest/access

las páginas se procesan y todo está bien, pero cuando estoy en otro componente, por ejemplo

www.mySite.com/BeatAcknowledgeTest/home

y hago clic en un botón que me lleva a

www.mySite.com/BeatAcknowledgeTest/access

Recibo un error y mi aplicación no se redirige.

¿Alguna sugerencia?

2
4

Resolví este problema creando RequestForwardingController en mi aplicación. Que se encargará de todo el enrutamiento:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class RequestForwardingController {
    @RequestMapping(value = "/**/{[path:[^\\.]*}")
    public String redirect() {
        // Forward to home page so that angular routing is preserved.
        return "forward:/";
    }
}

También resuelve el problema de la URL de recarga. En el que haga clic en el botón de recarga del navegador, se mostrará la página de error de arranque de Spring.

1
  • ¿No debería ser el RequestMapping's en valuesu "/**/{path:[^\\.]*}"lugar (sin el primero [?
    Tazaf
    4 mar.20 a las 8:09
0

Una de las formas de solucionar este problema es personalizar la configuración de MVC, que se ilustra en este artículo basado en esta respuesta: https://stackoverflow.com/a/46854105