0

===============控制器类==================

@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")没有将值设置为请求。

我用谷歌搜索并尝试了几种方法,但仍然得到空值。任何人都请帮我解决它。

4

0 回答 0