java - 当对象通过 post 命令发送到 spring WebApp 时,对象字段为 null

标签 java spring angular angular5

我制作了一种方法,将发布请求发送到我的 Spring Web 应用程序以创建新用户。发送的对象有 3 个字段,即用户名、电子邮件地址和密码。

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

我的 UserService 中的方法:

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

谁能给我一些建议吗?问题出在我的 Angular 代码中还是我的 Spring 代码中?谢谢。

编辑:

下面是请求负载:

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

所以是的,我认为它正在发送。但由于空字段引起的空指针异常,我收到了 500 响应。

最佳答案

在你的 Controller 中,你需要告诉方法从哪里获取newUser。在本例中,它来自 POST 正文,因此添加 @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());
}

关于java - 当对象通过 post 命令发送到 spring WebApp 时,对象字段为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51141887/

相关文章:

java - Spring Rest 模板创建多部分表单/数据客户端,像 postman 一样工作,抛出不可转换的异常

java - 如何在 spring 中创建一个非阻塞的@RestController webservice?

angular - 添加到 NgModule.schemas 的 CUSTOM_ELEMENTS_SCHEMA 仍然显示错误

java - 如何从 pom.xml 获取属性值?

java - Web 应用程序和独立 Java 应用程序的不同依赖范围

java - 如何在 MBean 描述中公开属性

angular - 使用 Angular 5 将图像上传到 Web Api 2

typescript - Angular 2子组件检测父组件的变化

java - Gradle 无法将项目依赖项添加到自身,因为它无法将 jar 文件添加到自身

java - 文件类的“尝试使用资源”功能