Java 无法从Spring boot到angular 6服务的RestController检索对象
我有下面的代码片段 我的休息控制器:Java 无法从Spring boot到angular 6服务的RestController检索对象,java,angular,spring,spring-boot,Java,Angular,Spring,Spring Boot,我有下面的代码片段 我的休息控制器: @RestController @RequestMapping("/hello") public class HelloController{ @RequestMapping(method = RequestMethod.GET, path="getUser") public UserDetails getUserDetails(){ return userdetails; }
@RestController
@RequestMapping("/hello")
public class HelloController{
@RequestMapping(method = RequestMethod.GET, path="getUser")
public UserDetails getUserDetails(){
return userdetails;
}
}
模型对象
Public Class UserDetails{
public String name;
public String role;
//getters and setters go here
}
角码
appcomponent.ts
baseUrl = "/hello"
userdetails: UserDetails;
this.http.get(`${this.baseUrl}`).subscribe((data : any) =>
this.userdetails = data);
console.log(this.userdetails);
UserDetails.ts
export class UserDetails {
name: string;
role: number;
}
调用将转到controller(我在调试模式下选中),但无法获得对angular的响应(userdetails未定义)请确保使用与服务中相同的变量类型:
UserDetails.ts
export class UserDetails {
name: string;
role: string;
}
还应尝试在调用中使用泛型以确保类型兼容性:
this.http.get<UserDetails>(`${this.baseUrl}`).subscribe((data : UserDetails)
this.http.get(`${this.baseUrl}`).订阅((数据:UserDetails)
确保使用与服务中相同的变量类型:
UserDetails.ts
export class UserDetails {
name: string;
role: string;
}
还应尝试在调用中使用泛型以确保类型兼容性:
this.http.get<UserDetails>(`${this.baseUrl}`).subscribe((data : UserDetails)
this.http.get(`${this.baseUrl}`).订阅((数据:UserDetails)
您应该在get方法中明确指定类型,您可以订阅数据,如下所示,还可以按以下方式使用subscribe。在java中指定具有相同数据类型的UserDetails文件
this.http.get<UserDetails>(this.baseURL).subscribe(
data => {
this.userDetails= data;
console.log(this.userDetails.name);
console.log(this.userDetails.role);
}
);
this.http.get(this.baseURL).subscribe(
数据=>{
this.userDetails=数据;
log(this.userDetails.name);
log(this.userDetails.role);
}
);
您应该在get方法中明确指定类型,您可以订阅数据,如下所示,还可以按以下方式使用subscribe。在java中指定具有相同数据类型的UserDetails文件
this.http.get<UserDetails>(this.baseURL).subscribe(
data => {
this.userDetails= data;
console.log(this.userDetails.name);
console.log(this.userDetails.role);
}
);
this.http.get(this.baseURL).subscribe(
数据=>{
this.userDetails=数据;
log(this.userDetails.name);
log(this.userDetails.role);
}
);
我已经修改了我的UserDetails文件,但很抱歉我的错误,我忘了在服务调用中映射
this.http.get(
${this.baseUrl}
).map((res:UserDetails)=>res)我已经修改了我的UserDetails文件,但是很抱歉,我的错误,我忘记了在服务调用中映射
this.http.get(
${this.baseUrl}
).map((res:UserDetails)=>res)您启用了CORS吗?是的,我启用了1。尝试从postman调用rest服务并在${this.baseUrl}替换相同的url
。看看你是否会得到?2.如果你仍然没有得到定义,请使用承诺。为什么在你的java代码中你有sting角色和angular number?据我所知,这些数据类型也应该是相同的,你启用了CORS吗?是的,我启用了1。试着从postman调用rest服务,并在${this.baseUrl}替换相同的url
。看看你是否会得到?2.如果你仍然没有得到定义,请使用承诺。为什么在你的java代码中你有sting角色和angular number?据我所知,这些数据类型也应该是相同的,仍然没有得到。你是否修改了你的UserDetails文件?你是否在你的spring boot方法中添加了@CrossOrigin注释controller仍然无法获取您是否修改了UserDetails文件?是否在controller中的spring引导方法中添加了@CrossOrigin注释