刷新后的Whitelabel错误页面

tra*_*rap 4 java spring-boot angular2-routing angular

我有 Spring Boot 应用程序(后端),对于前端,我使用 Angular 2 单页应用程序。

每当我导航到路线(例如:localhost:8080/getAccounts)并在导航后刷新时,我都会收到 Whitelabel 错误页面。如果我位于根 localhost:8080 ,我工作得很好。该问题仅发生在子链接中。

返回(使用返回/后退按钮)到上一页也可以正常工作。只是刷新。

我也无法直接调用链接:localhost:8080/getAccounts。首先,我必须转到主页(localhost:8080)并通过子导航栏调用该页面。

有人遇到同样的问题吗?我确实必须改变。我的代码:

主.ts

import {bootstrap} from '@angular/platform-browser-dynamic';
import {AppComponent} from './components/app.component';
import {HTTP_PROVIDERS};
import {enableProdMode} from '@angular/core';

enableProdMode();
bootstrap(AppComponent, [HTTP_PROVIDERS]);
Run Code Online (Sandbox Code Playgroud)

应用程序组件:

import { Component, OnInit } from '@angular/core';

import { Http } from '@angular/http';
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from '@angular/router-deprecated';

import { HomeComponent } from './home.component';
import { UserSearchComponent} from './webUserProfiles.component';
import { UserDetailViewComponent} from './webUserProfileView.component'; 

import { HTTPService } from '../service/http.service';


@Component({
  selector: 'app-content',
  templateUrl: './app/templates/app.component.html',
  directives: [ROUTER_DIRECTIVES, AccessErrorComponent],
  providers: [
    ROUTER_PROVIDERS,
    HTTPService
  ]
})

@RouteConfig([
  {
    path: '/',
    name: 'HomeComponent,
    useAsDefault: true
  },
  {
    path: '/user',
    name: 'UserSearch',
    component: UserSearchComponent,
  },
  {
    path: '/user/:id',
    name: 'UserDetailView',
    component: UserDetailViewComponent,
  }
])

export class AppComponent implements OnInit {
    constructor (
    ) { } 
}
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

Leo*_*out 5

经过一番研究,我发现Thierry Templier给出了很好的答案

使用默认的路由策略(HTML5 历史记录 API),您需要一个服务器配置来将所有路径重定向到 HTML 入口点文件。使用 hashbang 方法则没有必要...如果您想切换到这种方法,只需使用以下代码:

import { bootstrap } from "angular2/platform/browser";
import { provide } from "angular2/core";
import {
  ROUTER_PROVIDERS, LocationStrategy, HashLocationStrategy
} from "angular2/router";

bootstrap(MainApp, [
  ROUTER_PROVIDERS,
  provide(LocationStrategy, {useClass:HashLocationStrategy});
]);
Run Code Online (Sandbox Code Playgroud)

您可以看看有关此问题的以下问题: