刷新后的Whitelabel错误页面

时间:2016-08-12 09:15:02

标签: java angular spring-boot angular2-routing

我有Spring Boot Application(后端),而前端我正在使用Angular 2单页应用程序。

每当我导航到路由时,例如:localhost:8080 / getAccounts,并在导航后执行刷新,我得到Whitelabel错误页面。如果我在root localhost:8080我工作正常。该问题仅发生在子链接中。

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

我也无法直接调用链接:localhost:8080 / getAccounts。首先我必须回家(localhost:8080)通过子导航栏调用页面。

有人有同样的问题吗?我需要改变的是什么。我的代码:

Main.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]);

app.comonent:

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 (
    ) { } 
}
}

提前致谢

3 个答案:

答案 0 :(得分:2)

经过一些研究,我从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});
]);
  

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

     

答案 1 :(得分:0)

每当刷新时,我的Angular SPA上都会出现类似的WhiteLabel错误消息。

如果您不想更改应用程序URL(如果使用HashLocation Strategy会发生这种情况),则可以添加一个新控制器来处理Spring Boot应用程序中的White label Error映射。

修复方法是创建一个实现ErrorController的控制器,并返回转发到 /

的ModelAndView对象
@CrossOrigin
@RestController
public class IndexController implements ErrorController {
    
    private static final String PATH = "/error";
    
    @RequestMapping(value = PATH)
    public ModelAndView saveLeadQuery() {           
        return new ModelAndView("forward:/");
    }

    @Override
    public String getErrorPath() {
        return PATH;
    }
}

答案 2 :(得分:0)

如果您不想使用HashLocationStrategy,您可以在您的项目中添加以下控制器:

health