Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 刷新后的白色标签错误页_Java_Angular_Spring Boot_Angular2 Routing - Fatal编程技术网

Java 刷新后的白色标签错误页

Java 刷新后的白色标签错误页,java,angular,spring-boot,angular2-routing,Java,Angular,Spring Boot,Angular2 Routing,我有Spring启动应用程序(后端),前端我使用Angular 2单页应用程序 每当我导航到一个路由(例如:localhost:8080/getAccounts)并在导航后刷新时,我都会看到白标签错误页面。如果我是根localhost:8080,我就可以正常工作。问题只发生在子链接中 返回(使用返回/返回按钮)到上一页也可以正常工作。只是刷新一下 我也不能直接调用链接:localhost:8080/getAccounts。首先,我必须回到主页(localhost:8080),通过子导航栏调用页面

我有Spring启动应用程序(后端),前端我使用Angular 2单页应用程序

每当我导航到一个路由(例如:localhost:8080/getAccounts)并在导航后刷新时,我都会看到白标签错误页面。如果我是根localhost:8080,我就可以正常工作。问题只发生在子链接中

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

我也不能直接调用链接:localhost:8080/getAccounts。首先,我必须回到主页(localhost:8080),通过子导航栏调用页面

有人有同样的问题吗?我必须改变的理由。我的代码:

梅因酒店

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.com组件:

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

提前感谢

经过一些研究,我从

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

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


每当我刷新时,我的Angular SPA上都会出现类似的问题白色标签错误消息

如果您不想更改应用程序URL(如果使用HashLocation策略,将会发生这种情况),您可以添加一个新的控制器来处理Spring Boot应用程序中的白标签错误映射

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

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

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

@控制器
公开课{
@GetMapping(“/”)
公共字符串欢迎(){
返回“index.html”;
}
//匹配没有后缀的所有内容(因此不是静态资源)
@GetMapping(值={
“/{path:[^.]*}”,
“/{path:[^.]*}/{path:[^.]*}”,
“/{path:[^.]*}/{path:[^.]*}/{path:[^.]*},
“/{path:[^.]*}/{path:[^.]*}/{path:[^.]*}/{path:[^.]*}/{path:[^.]*}”,
“/{path:[^.]*}/{path:[^.]*}/{path:[^.]*}/{path:[^.]*}/{path:[^.]*}/{path:[^.]*}”
//如果需要,请添加更多。。。
})
公共字符串重定向(){
//转发到主页,以便保留路由。
返回“forward:/”;
}
}

首先感谢您的回答。路由(Router_providers)在我的应用程序的app.component中,而不是main.ts中。在main.ts中,我只有引导(MyApp,[HTTP_PROVIDERS]);而且没有路由器供应商。这有什么区别吗?这只是对任何考虑实施这一策略的人的一个提醒:angular文档特别警告,如果您打算使用任何服务器端渲染来加快加载时间,就不要使用哈希路由策略。散列路由会阻止它工作。很好的快捷方式,比在tomcat上设置重写规则更容易
@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;
    }
}