Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular routing doesn't work after deploy into a Springboot Application

I have build a Springboot Application including Angluar5. I have a gradle build script which loads the angular files into my springboot project.The files are under resources/static of my springboot project. When i start my application the routing of angular is not working anymore and i get

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

My project structure:

enter image description here

I deployed my angular app with following statement:

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

This will make my static files accessable to following link:

www.mySite.com/BeatAcknowledgeTest/...

If i type

www.mySite.com/BeatAcknowledgeTest/access

the pages renders and all is good but when i am in another component, for example

www.mySite.com/BeatAcknowledgeTest/home

and i click on a button which routes me to

www.mySite.com/BeatAcknowledgeTest/access

i am getting an error and my application is not redirecting.

Any suggestions?

like image 522
Anton Styopin Avatar asked Apr 24 '18 12:04

Anton Styopin


People also ask

How do I enable Angular routing?

To enable routing in our Angular application, we need to do three things: create a routing configuration that defines the possible states for our application. import the routing configuration into our application. add a router outlet to tell Angular Router where to place the activated components in the DOM.

Can Angular be used with spring boot?

The Angular ApplicationWith our demo Spring Boot application up and running, we can now create a simple Angular application capable of consuming the REST controller API.


1 Answers

I solved this issue by creating RequestForwardingController in my app. Which will take care of all the routing:

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:/";
    }
}

It also solves the reload URL issue as well. In which you click on reload button of browser it will show Spring boot error page.

like image 191
DirtyMind Avatar answered Oct 12 '22 13:10

DirtyMind