我知道Spring Boot会在error/409.html中为一个异常呈现一个胸腺叶模板,默认情况下会导致状态码409冲突。但是,默认情况下,ObjectOptimisticLockingFailureException似乎给出了一个500服务器错误。
我能够处理这个异常,并使用如下的@ControllerAdvice“手动”重定向到error/409.html模板:
@ControllerAdvice
public class GlobalControllerAdvice {
    @ResponseStatus(HttpStatus.CONFLICT)
    @ExceptionHandler({DataIntegrityViolationException.class, ObjectOptimisticLockingFailureException.class})
    public ModelAndView handleConflict(HttpServletRequest request, Exception e) {
        ModelAndView result = new ModelAndView("error/409");
        result.addObject("url", request.getRequestURL());
        return result;
    }
}因为ObjectOptimisticLockingFailureException不是我自己代码的一部分,所以我不能用@ResponseStatus(HttpStatus.CONFLICT)注释它,使其具有409。
是否可以将ObjectOptimisticLockingFailureException映射到409,并对Spring Boot中的错误代码使用默认的错误模板机制?
发布于 2020-08-16 08:38:52
这可能行得通
    @Bean(name="simpleMappingExceptionResolver")
    public SimpleMappingExceptionResolver
                  createSimpleMappingExceptionResolver() {
    SimpleMappingExceptionResolver r =
                new SimpleMappingExceptionResolver();
    Properties mappings = new Properties();
    mappings.setProperty("ObjectOptimisticLockingFailureException", "error/409");
    r.setExceptionMappings(mappings);
    return r;
  }https://stackoverflow.com/questions/63418088
复制相似问题