web-dev-qa-db-fra.com

EL1008E: La propriété ou le champ 'horodatage' est introuvable sur l'objet de type 'Java.util.HashMap' - peut-être pas public?

Lorsque j'utilise le gestionnaire d'exceptions global de Spring Boot, j'ai obtenu ceci:

org.springframework.expression.spel.SpelEvaluationException: EL1008E: La propriété ou le champ 'timestamp' est introuvable sur l'objet de type 'Java.util.HashMap' - peut-être pas public?

Ceci est mon code, et j'ai importé Spring Security et Thymeleaf dans mon projet.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en">
    <meta charset="UTF-8" />
    <title>统一异常处理</title>
</head>
<body>
<h1> 系统异常 </h1>
<div th:text="${url ?: '未捕捉到URL'}"></div>
<div th:text="${exception == null ? '暂无异常信息' : exception.message}"></div>
</body>
</html
@GetMapping("/test")
public String test() throws Exception {
    throw new Exception("发生错误");
}
@ControllerAdvice
public class GlobalExceptionHandler {

    private static final String DEFAULT_ERROR_VIEW = "/error";
    private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(value = Exception.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest request, Exception e) {
        LOGGER.error("系统异常", e);
        ModelAndView mav = new ModelAndView();
        mav.addObject("exception", e);
        mav.addObject("url", request.getRequestURI());
        mav.setViewName(DEFAULT_ERROR_VIEW);
        return mav;
    }
}
10
Chong Wang

Le nom de votre vue doit être "erreur" mais pas "/ erreur", le résolveur de vue trouverait le modèle nommé error.html dans le dossier du modèle, si le résolveur de vue ne peut pas en trouver un, il utilisera celui par défaut, dans lequel l'horodatage est nécessaire dans les modèles.

5
xierui