如何将变量从@controller传递到@controlleradvice



现在我使用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) {
​

​}
}

相关内容

  • 没有找到相关文章

最新更新