有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过post命令向SpringWebApp发送对象时,java对象字段为null

我制作了一个方法,向我的SpringWeb应用程序发送一个post请求,以创建一个新用户。正在发送的对象有三个字段,即用户名、电子邮件地址和密码

我已经验证了对象被发送到服务器时,这些值是否存在。下面是我的代码:

我的用户服务中的方法:

  createUser(newUser: UserCreateDTO): Observable<Response> {
    return this.http.post<Response>(this.authUrl + "/user/create", newUser);
}

我试过把Response改成anyUserCreateDTO,但结果总是一样的。对象到达,但字段都为空

我的用户组件中的方法:

  createUser():void{
    this.loading = true;
      this.userService.createUser(new UserCreateDTO(this.userForm.get('userName').value, 
                this.userForm.get('emailAddress').value, 
                this.userForm.get('password').value))
      .subscribe((response: Response) => { 
        if(response.ok)
          this.msgs.push({severity:'success', summary:'Success', detail: response.statusText});
        else
          this.msgs.push({severity:'error', summary:'Error', detail: response.statusText});
        this.loading = false;
      });
  } 

正在发送的对象:

export class UserCreateDTO {
    userName: string;
    emailAddress: string;
    password: string;

    constructor(userName?: string, emailAddress?: string, password?: string){
        this.userName = userName;
        this.emailAddress = emailAddress;
        this.password = password;
    }
}

这是在服务器端接收对象的端点:

@PostMapping("/create")
private ResponseEntity<String> createNewUser(UserCreateDTO newUser) {
    Status status = userService.createUser(newUser);
    return ResponseEntity.status(status.isSuccess() ?
            HttpStatus.CREATED : HttpStatus.BAD_REQUEST).body(status.getInfo());
}

谁能给我点建议吗?这个问题是在我的角度代码中还是在我的弹簧代码中?谢谢

编辑:

以下是请求有效负载:

{userName: "1", emailAddress: "1", password: "1"}
emailAddress
:
"1"
password
:
"1"
userName
:
"1"

所以是的,我认为它正在被发送。但是我得到了一个500响应,因为空字段导致了nullpointer异常


共 (1) 个答案

  1. # 1 楼答案

    在控制器中,需要告诉方法从何处获取newUser。在本例中,它来自POST body,因此添加@RequestBody注释,如下所示:

    @PostMapping("/create")
    private ResponseEntity<String> createNewUser(@RequestBody UserCreateDTO newUser) {
        Status status = userService.createUser(newUser);
        return ResponseEntity.status(status.isSuccess() ?
                HttpStatus.CREATED : HttpStatus.BAD_REQUEST).body(status.getInfo());
    }