Как получить значения формы в Springboot, отправленные из angular? - PullRequest
0 голосов
/ 28 сентября 2019

Я создаю данные FormData

const formulario = new FormData();

formulario.append('preco', this.formularioCasaVenda.get('preco').value);
formulario.append('foto_1', this.formularioCasaVenda.get('foto_1').value);
formulario.append('dormitorios', this.formularioCasaVenda.get('dormitorios').value);

Я отправляю их в виде почтового запроса.

const httpOptions = {
  headers: new HttpHeaders({'Content-Type': 'multipart/form-data'})
};
return this.http.post<Casa>("http://localhost:8080/api/casas-venda", formData1).pipe(
  tap((product: Casa) => console.log(`added product w/ id=$`)),
  catchError(this.handleError<Casa>('addProduct'))
);

Как получить доступ к dormitorios, foto_1, preco из загрузочного контроллера Spring,чтобы я мог заполнить модель?

Моя "отчаянная" попытка.

  @CrossOrigin(origins = "http://localhost:4200")
@PostMapping("casas-venda")
public CasaVenda storeCasaVenda(@RequestParam("formulario") MultipartFile[] casaVenda){

      CasaVenda casaVendaDB = new CasaVenda();    
      casaVendaDB.setDormitorios(1);
      casaVendaDB.setPreco( Double.parseDouble(casaVenda[1].toString()));
      casaVendaDB.setPreco(900.00);


      return casaVendaDB;

   // return this.casaVendaRepositorio.save(casaVenda);

}

1 Ответ

1 голос
/ 28 сентября 2019

Это один из способов ее решения:

@CrossOrigin(origins = "http://localhost:4200")
@PostMapping("/casas-venda")
public CasaVenda storeCasaVenda(@RequestParam("dormitorios") Integer dormitorios, 
           @RequestParam("preco") BigDecimal preco,
           @RequestParam("foto_1") MultipartFile foto) {

  CasaVenda casaVendaDB = new CasaVenda();    
  casaVendaDB.setDormitorios(dormitorios);
  casaVendaDB.setPreco(preco.doubleValue());

  // foto I am assuming is a file, so you receive it and you have to get the InputStream from it.

  return casaVendaDB;

  // return this.casaVendaRepositorio.save(casaVenda);
}

Один совет:

Не возвращайтесь в конечные точки классов @Entity, это не очень хорошая практика,вместо этого вы должны создать DTO (Data Transfer Object) и вернуть только внешнему интерфейсу то, что им нужно знать.

https://martinfowler.com/eaaCatalog/dataTransferObject.html

Я надеюсь, что смогу вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...