Поля объекта обнуляются, когда объект отправляется с помощью команды post в Spring WebApp - PullRequest
0 голосов
/ 02 июля 2018

Я создал метод, который отправляет запрос на публикацию в мое весеннее веб-приложение для создания нового пользователя. Отправляемый объект имеет 3 поля, а именно имя пользователя, адрес электронной почты и пароль.

Я уже проверил, что значения присутствуют в момент отправки объекта на сервер. Ниже мой код:

Метод в моем UserService:

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

Я пытался изменить Response на any или UserCreateDTO, но результат всегда один и тот же. Объект прибывает, но все поля равны нулю.

Метод в моем пользовательском компоненте:

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

Кто-нибудь может дать мне несколько советов? Проблема в моем угловом коде или в коде пружины? Спасибо.

EDIT:

Ниже полезная нагрузка запроса:

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

Так что да, я думаю, что это отправляется. Но я получаю ответ 500 обратно из-за исключения nullpointer, которое вызывается пустыми полями.

1 Ответ

0 голосов
/ 02 июля 2018

В вашем контроллере вам нужно указать метод, откуда взять 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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...