2017-02-28 2 views
0

Ich habe ein Projekt mit Spring und Angular JS. Wenn ich die ungly zu entfernen versuchen "/ # /", gefolgt ich folgende Tutorial:Spring und Angular JS HTML5 Modus mit abstrakten Routing

Configuring HTML 5 mode

in meinem Index html-Datei:

<base href="/"> 

in meinem AngularJS config:

app.config(
    function ($stateProvider, $urlRouterProvider, $locationProvider) { 
     $urlRouterProvider.otherwise("/"); 

     .state('business', { 
      abstract: true, 
      url: "/", 
      templateUrl: "business/businessView" 
     }) 

     .state('business.intro1', { 
      url: "/intro1", 
      templateUrl: "business/page-1", 
     }) 

     $locationProvider.html5Mode({enabled: true)}; 
    } 
); 

Also Um Ressource zu unterstützen, fügte ich folgenden JAVA-Code zu meinem Federcontroller

01 hinzu
@RequestMapping(value = "/{[path:[^\\.]*}") 
public String redirect() { 
    return "forward:/"; 
} 

@RequestMapping("/business/**") 
public String returnBusinessHtml() { 
    String uri = request.getRequestURI().substring(request.getContextPath().length()); 
    return uri; 
} 

und erfolgreich vermieden 404 Problem beim direkten Zugriff URL.


Alles sucht jetzt gut, aber wenn ich eine URL zum abstrakten Controller von AngularJS hinzufügen:

.state('business', { 
    abstract: true, 
    url: "/business", 
    templateUrl: "business/businessView" 
}) 

die 404 Ausgabe kam wieder heraus, als ich versuchte localhost:8080/business/intro1 zuzugreifen.

Wenn ich andere Seite wie localhost:8080/businessLanding versuche, ist es OK.

Vielleicht kam das Problem von @RequestMapping(value = "/{[path:[^\\.]*}") dieser reguläre Ausdruck? Bitte helfen Sie, danke!

Antwort

0

Verzeihen Sie mir, ich habe es nur auf die ursprüngliche Lösung geändert:

@RequestMapping(value = "/**/{[path:[^\\.]*}") 
public String redirect() { 
    return "forward:/"; 
} 

und alles ist fertig!