【问题标题】:Spring and Angular JS HTML5 mode with abstract routing带有抽象路由的 Spring 和 Angular JS HTML5 模式
【发布时间】:2017-02-28 14:00:39
【问题描述】:

我有一个使用 Spring 和 Angular JS 的项目。 当我尝试删除丑陋的“/#/”时,我遵循了以下教程:

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

所以为了支持资源,我在我的 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


    【解决方案1】:

    原谅我,我只是修改成原来的解决方案:

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

    一切都完成了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多