我有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 (
) { }
}
}
提前致谢
答案 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