2017-02-28 24 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:/"; 
} 

,一切都完成了!