2017-02-28 54 views
0

我有一個項目使用Spring和Angular JS。 當我嘗試刪除ungly 「/#/」,我也跟着下面的教程:Spring和Angular JS HTML5模式與抽象路由

Configuring HTML 5 mode

在我的索引HTML文件

<base href="/"> 
我AngularJS配置

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)}; 
    } 
); 

所以爲了支持資源,我在我的彈簧控制器中添加了以下JAVA代碼:

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

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

並直接訪問URL時成功避免了404問題。


一切看上去不錯但就目前而言,當我添加URL以angularJS的抽象控制器:

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

404問題又出來了,當我試圖訪問localhost:8080/business/intro1

如果我嘗試其他頁面,如localhost:8080/businessLanding,這沒關係。

也許問題出自@RequestMapping(value = "/{[path:[^\\.]*}")這個正則表達式?請幫忙,謝謝!

回答

0

原諒我,我只是將其修改爲原來的解決方案:

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

,一切都完成了!