EL1008E: Свойство или поле 'timestamp' не может быть найдено для объекта типа 'java.util.HashMap' - возможно, не публично?
Когда я использую глобальный обработчик исключений Spring Boot, я получил это:
org.springframework.expression.spel.SpelEvaluationException: EL1008E: Свойство или поле 'отметка времени' не может быть найдено для объекта типа 'java.util.HashMap' - может быть, не публично?
Это мой код, и я импортировал Spring Security и Thymeleaf в свой проект.
<!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;
}
}
1 ответ
Ваше имя представления должно быть "error", но не "/ error", распознаватель представлений найдет шаблон с именем error.html в папке шаблонов, если средство сопоставления представлений не может найти тот, он будет использовать шаблон по умолчанию, в котором отметка времени нужен в моделях.