Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Angular 4 http服务调用无法调用spring rest服务方法_Angular_Hibernate_Spring Boot_Angular Http_Spring Rest - Fatal编程技术网

Angular 4 http服务调用无法调用spring rest服务方法

Angular 4 http服务调用无法调用spring rest服务方法,angular,hibernate,spring-boot,angular-http,spring-rest,Angular,Hibernate,Spring Boot,Angular Http,Spring Rest,我是初学者角4以及弹簧靴休息 我制作了一个简单的应用程序,其中Angular 4作为前端,Spring Rest作为API。 我试图从http请求调用SpringREST控制器方法(Post) 下面是Angular 4代码 从'@angular/core'导入{Injectable}; 从'@angular/Http'导入{Http,Headers,Response,RequestOptions}; @可注射() 导出类服务器服务{ 构造函数(私有http:http){} headers=新的

我是初学者角4以及弹簧靴休息

我制作了一个简单的应用程序,其中Angular 4作为前端,Spring Rest作为API。 我试图从http请求调用SpringREST控制器方法(Post)

下面是Angular 4代码

从'@angular/core'导入{Injectable};
从'@angular/Http'导入{Http,Headers,Response,RequestOptions};
@可注射()
导出类服务器服务{
构造函数(私有http:http){}
headers=新的头({“内容类型”:“应用程序/json”});
storeServers(学生:任意[]){
const WEBSERVICE_地址_学生:字符串=”http://localhost:8080/api/saveStudent"; 
返回this.http.post(WEBSERVICE\u ADDRESS\u STUDENT,JSON.stringify(students),{headers:this.headers})
.订阅(
(响应)=>console.log(响应),
(错误)=>console.log(“错误:”,+error)
);
}
}
/*************下面是学生数组*******************/
学生=[
{
学号:102,
姓名:“abc”,
姓:“xyz”,
城市:“空间”
},
{
学号:103,
名字:“杰克”,
姓:‘th’,
城市:海洋
}

];通过做一些小改动,我成功地执行了上述代码

控制器

@RequestMapping(value = "/saveStudent", method = RequestMethod.POST, produces = "application/json")
    public void saveStudent(@RequestBody StudentDetails[] objStudentDetailsList) {
        System.out.println(objStudentDetailsList[0].getName());
    }
实体

@Entity
@Table(name = "StudentDetails")
public class StudentDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long studentId;
    private String name;
    private String surName;
    private String city;
    public Long getStudentId() {
        return studentId;
    }
    public void setStudentId(Long studentId) {
        this.studentId = studentId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurName() {
        return surName;
    }
    public void setSurName(String surName) {
        this.surName = surName;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }

这里有很多问题。1.使用Angular 4,使用不推荐使用的Http服务,而不是最新的稳定版本,使用未推荐使用的HttpCLient服务。2.使用
any
。3.忘记用
@RequestBody
注释objStudentDetails参数。4.使用数组而不是列表。5.随机缩进每行代码。6.在服务中订阅,而不是返回一个可观察值,并在组件中订阅。错误是因为以上6点吗?我不认为Angular代码有问题,因为我在DotNet的WCF Rest服务中使用了相同的代码,并且它工作正常。Java端出了问题。不,是3和4导致了错误。但是你也应该开始研究其他的。让某些东西“起作用”是不够的。用2年前的框架版本开始一个新项目不是一个明智的决定。在这两年里,我发现了很多错误和改进。我对这些东西还不熟悉,所以我可能没有遵循最佳实践。但我不明白为什么错误指向StudentDetails类的构造函数。因为我已经在那里定义了构造函数。不,它指向类
[Lcom.luv2code.springboot.cruddemo.entity.StudentDetails;
。这是类
StudentDetails[]
,即StudentDetails数组。