【发布时间】:2017-02-28 14:00:39
【问题描述】:
我有一个使用 Spring 和 Angular JS 的项目。 当我尝试删除丑陋的“/#/”时,我遵循了以下教程:
在我的索引 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)};
}
);
所以为了支持资源,我在我的 spring 控制器中添加了以下 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"
})
当我尝试访问localhost:8080/business/intro1 时,404 问题再次出现。
如果我尝试其他页面,如localhost:8080/businessLanding,没关系。
也许问题来自@RequestMapping(value = "/{[path:[^\\.]*}")这个正则表达式?请帮忙,谢谢!
【问题讨论】:
标签: javascript angularjs spring html angular-ui-router