【问题标题】:Error when performing "POST" operation in spring?春季执行“POST”操作时出错?
【发布时间】:2019-04-19 08:25:51
【问题描述】:

我已经从 Angular 服务类发送了数据。这里我发送了三个参数 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: Stream closed]

为什么会出现这个错误?我从角度发送的参数是否不匹配或在我的@Postmapping 操作中有什么问题?我也看到了其他文章和问题,但没有用。

【问题讨论】:

    标签: java spring angular spring-boot angular6


    【解决方案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 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2015-08-09
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多