现在,我使用控制器建议制作了自定义处理程序,并且运行良好。我想在自定义验证中添加“发票流程已失败”的附加信息。我该如何做到这一点?谢谢
发布于 2021-10-09 08:09:07
您可以定义自己的异常对象,并使用它将数据从控制器方法传递到异常处理程序方法。
首先将异常定义为:
public class InvoiceException extends RuntimeException {
private Long invoiceId;
private String additionalInfo;
}然后在控制器中,如果您检查是否违反了相关的业务规则,则创建此异常的实例并抛出它:
public class InvoiceController {
@PostMapping("/invoice")
public Long processInvoice(InvoiceRequest request){
if(fail) {
throw new InvoiceException(invoiceId, "foobar");
}
}
}在@ContorllerAdvice中,您可以从exception实例访问这些数据:
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(InvoiceException.class)
public ResponseEntity<ErrorMessage> handle(InvoiceException ex) {
}
}https://stackoverflow.com/questions/69504584
复制相似问题