web-dev-qa-db-ja.com

EL1008E:プロパティまたはフィールド 'timestamp'がタイプ 'Java.util.HashMap'のオブジェクトで見つかりません-おそらくパブリックではありませんか?

Spring Bootのグローバル例外ハンドラを使用すると、次のようになりました:

org.springframework.expression.spel.SpelEvaluationException:EL1008E:タイプ 'Java.util.HashMap'のオブジェクトでプロパティまたはフィールド 'timestamp'が見つかりません-パブリックでない可能性がありますか?

これが私のコードであり、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;
    }
}
10
Chong Wang

ビュー名は「/ error」ではなく「error」である必要があります。ビューリゾルバーは、テンプレートフォルダーでerror.htmlという名前のテンプレートを見つけることができます。モデルに必要です。

5
xierui