Как отобразить сообщение об исключении из Springboot в приложении angular - PullRequest
0 голосов
/ 16 апреля 2020

Я работал над интеграцией с весенней загрузкой + angular и хочу знать, как отобразить сообщение об исключении в моем приложении angular. Я создал класс обработчика исключений при весенней загрузке примерно так:

@ControllerAdvice
public class ExceptionController {

@ExceptionHandler(value={CommonException.class})
public ResponseEntity<Object> noResult(CommonException e){
    HttpStatus status=HttpStatus.BAD_REQUEST;       
    return new ResponseEntity<Object>(new CustomExceptionPayload(e.getMessage(),"400"), status);
}
}

и на стороне angular я отправляю запрос через класс обслуживания с использованием httpclient, например:

public generatFile(file:any,to:string,from:string,proj_name:string,count:string,env:string,event:string){
    console.log("in service");
    const formData=new FormData();
    formData.append('file',file);
    formData.append('to',to);
    formData.append('from',from);
    formData.append('proj_name',proj_name);
    formData.append('event',event);
    formData.append('env',env);
    formData.append('count',count);

    return this.http.post(this.baseUrl+'/events',formData,{
        observe: 'response',
        responseType: 'blob' as 'json'
      }
    );
}

И в моем основном компоненте, получающем ответ, подобный этому:

this.service.generatFile(this.file,new Date(this.to).toLocaleDateString(),new Date(this.from).toLocaleDateString(),this.proj_name,this.count,this.env,this.event).subscribe((resp: any) => {
    const blob = new Blob([resp.body], { type: resp.headers.get('Content-Type') });
    saveAs(blob, this.fileName);
    this.loading=false;
  },((error:any) =>{
    this.message=error.message;
    this.loading=false;
  }

Я использовал error.message в angular, чтобы получить сообщение об ошибке, как указано выше, но оно не работало.

Когда я использую почтальон и получаю это как ответ:

{
"message": "number of events per file is greater than number of failed events",
"status": "400"
}

Я не знаю, как получить такое же сообщение об ошибке в angular, которое я отправляю из весенней загрузки. Буду признателен, если кто-нибудь сможет предоставить ответ с кодом.

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете использовать ошибка объект из наблюдаемого.

this.service.generatFile().subscribe(
    (res) => {
        // handle response
    }, (err) => {
        // handle errors
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...