===============控制器类==================
@PostMapping(path = "/products")
public ResponseEntity<ProductResponseDTO> saveProduct(@RequestBody Product product, @RequestHeader(name = "uuid", required = false) String uuid, HttpServletRequest request) throws Exception {
request.setattribute("product",product);
productRepo.save(product);
......
.....
}
=======================异常处理类======================== ==
@ControllerAdvice
public class GlobalErrorHandler{
@ExceptionHandler({RuntimeException.class})
public ResponseEntity<ErrorDetails> generateRuntimeException(RuntimeException re, WebRequest request, HttpServletRequest servletRequest) throws IOException {
ErrorDetails errorDetails = new ErrorDetails();
Product product=(Product)servletRequest.getAttribute("product");
errorDetails.setTimestamp(LocalDateTime.now());
errorDetails.setMessage("500");
errorDetails.setDetails(re.getMessage());
log.error("Exception occured3: " + re);
}
return new ResponseEntity<ErrorDetails>(errorDetails, HttpStatus.INTERNAL_SERVER_ERROR);
}
]
我可以在执行时看到request.getAttribute("product")
,它显示空值。一旦发生异常,它就不会进入控制器主体,而是直接将控制传递给异常类。因此,resuest.setAttribute("product")
没有将值设置为请求。
我用谷歌搜索并尝试了几种方法,但仍然得到空值。任何人都请帮我解决它。