现在我使用controlleradvice制作自定义处理程序,并且工作良好。我想添加额外的信息的自定义验证"failed"发票流程。我怎么才能做到呢?谢谢你
您可以定义自己的异常对象,并使用它将数据从控制器方法传递给异常处理程序方法。
首先定义一个异常:
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
中,您可以从异常实例访问这些数据:
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(InvoiceException.class)
public ResponseEntity<ErrorMessage> handle(InvoiceException ex) {
}
}