在春季执行“ POST”操作时出错?

时间:2018-11-16 07:01:33

标签: java spring angular spring-boot angular6

我已经从角度服务类中发送了数据。这里我已将三个参数 letter,documents,empList 发送到Api以进行POST操作

export class LetterService {

  private baseUrl = 'http://localhost:8080/api/letter';
   constructor(private http: HttpClient) { }

   saveThree(letter: Object,documents: Object,empList: Object): Observable<Object> {
    return this.http.post(`${this.baseUrl}` + `/create`, {letter,documents,empList});
  }

在Spring引导端,我使用了@RequestBody来映射来自服务的即将到来的JSON数据。(您可能会忽略代码的内部逻辑,因为错误是另一回事)

@PostMapping(value = "/letter/create")
    public String postAllThree(@RequestBody LetterDto letterDto,
            @RequestBody List<Document> document,@RequestBody SelectionCustomOfficeDto selectionCustomOfficeDto) {


        ClkLetter clkLetter=clkLetterRepository.findById((long)1).get();

        Selection selection=selectionRepository.findById((long)letterDto.getSelectionNo()).get();

        Assessment assessment=assessmentRepository.findById((long)letterDto.getAssessmentNo()).get();



    Letter letter=letterRepository.save(new Letter(clkLetter,letterDto.getInOut(),letterDto.getInOutNo(),letterDto.getInOutDate(),letterDto.getLetterIssuedSubBy(),letterDto.getLetterFile(),letterDto.getRepresentativeName()
                ,selection,assessment));

     for(Document docume:document)  {

         if(docume.isChecked()) {
             letterDocRepository.save(new LetterDoc(letter,docume,"a"));
         }
     }

        return  "success";
    }

我得到的错误是:

[org.springframework.http.converter.HttpMessageNotReadableException:读取输入消息时发生I / O错误;嵌套异常是java.io.IOException:流关闭]

为什么此错误向我显示?我从ngular发送的参数不匹配或者我的@Postmapping操作中有任何错误吗?我也看到了其他文章和问题,但没有用。

1 个答案:

答案 0 :(得分:1)

您只能拥有一个@RequestBody。将{letter,documents,empList}合并到一个DTO POJO中。

public class MyDTO {
    private Object letter;
    private List<Object> documents;
    private List<Object> empList;
// getters and setters
}

对于原始类型的请求参数,您可以使用@RequestParam并将它们附加在URL中