Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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 使用Angular和Spring引导从本地主机获取数据_Java_Json_Angular_Spring_Spring Boot - Fatal编程技术网

Java 使用Angular和Spring引导从本地主机获取数据

Java 使用Angular和Spring引导从本地主机获取数据,java,json,angular,spring,spring-boot,Java,Json,Angular,Spring,Spring Boot,我正在使用Angular和Spring Boot构建一个web应用程序。我试图从localhost获取数据,但什么也得不到 这是来自服务器的json数据 这是我的服务ts import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import {map, catchError} from "rxjs/operators"; import { Observable,

我正在使用Angular和Spring Boot构建一个web应用程序。我试图从localhost获取数据,但什么也得不到

这是来自服务器的json数据

这是我的服务ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {map, catchError} from "rxjs/operators";
import { Observable, throwError } from 'rxjs';
import {Entreprise} from '../modules/entreprise';

@Injectable({
  providedIn: 'root'
})
export class EntrepriseService {

  constructor(private http:HttpClient) {  }


  public getEntreprises():Observable<Entreprise>{

    return this.http.get<Entreprise>("http://localhost:8080/entreprises/all");

            }

}

这是html模板

<h4>entreprises</h4>
<button (click)="onGetEntreprises()">get </button>

<p *ngFor="let ee of entreprises">{{ee.content.name}}</p>

企业
收到
{{ee.content.name}

这就是我点击按钮时的错误


首先,您应该在
p
标记中添加一个
*ngIf
,因为如果
Enterprise
的数组未初始化(它是
async
=>API调用),则可能会出现空错误


另外,这也是实际的问题,您定义了一个模型类引用,但没有定义一个数组,它实际上是后端返回的

如果您这样做,可能会更好:

this.enterprise = data.content
this.enterprises
看起来有点像这样:

enterprises: Enterprise[];

此外,您可能还没有在Spring方面实施CORS策略。这里有一篇关于这方面的好文章:。 出于测试目的,将
@CrossOrigin(origins=“*”)
添加到
@RestController
类中。这对开发是有好处的,但在生产中您应该避免使用defo,因为这将允许所有源代码请求您的API


更多提示:

  • 确保您的模型类在角度方面确实具有来自后端的所有字段
  • 是否确实导入了
    HttpClientModule


更新您的问题,告诉我它是否有效。

您确定没有使用https吗?没有,我没有使用https。您必须尝试调试此问题。我看不出有什么问题。但是为了调试,使用一个普通的JavaScript文件并使用如下的获取请求:fetch(“)。然后((response)=>response.json())。然后((data)=>console.log(data))谢谢它的工作。我在我的服务器上添加了@CrossOrigin(origins=“*”),它工作了
enterprises: Enterprise[];