Я работал над интеграцией с весенней загрузкой + 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, которое я отправляю из весенней загрузки. Буду признателен, если кто-нибудь сможет предоставить ответ с кодом.