- /**
- * Builds a map with error details
- *
- * @param aRequest
- * HttpServletRequest
- * @return Map of String to Object
- */
- @RequestMapping(ERROR_PATH)
- public Map<String, Object> error(HttpServletRequest aRequest) {
- Map<String, Object> body = getErrorAttributes(aRequest, getTraceParameter(aRequest));
- body.put("decorated-by", SimpleErrorController.class.getName());
- body.computeIfPresent(TRACE, (key, value) -> body.put(TRACE, ((String) value).split("\n\t")));
- return body;
- }
-
- private boolean getTraceParameter(HttpServletRequest request) {
- String parameter = request.getParameter(TRACE);
- if (parameter == null)
- return false;
- return !"false".equalsIgnoreCase(parameter);
- }
-
- private Map<String, Object> getErrorAttributes(HttpServletRequest aRequest, boolean includeStackTrace) {
- WebRequest webRequest = new ServletWebRequest(aRequest);
- return errorAttributes.getErrorAttributes(webRequest, includeStackTrace);
+ @GetMapping
+ public String handleError(HttpServletRequest request) {
+ ServletWebRequest servletWebRequest = new ServletWebRequest(request);
+ Throwable t = errorAttributes.getError(servletWebRequest);
+ if (t != null)
+ logger.warn("handleError", t);
+ Map<String, Object> attributes = errorAttributes.getErrorAttributes(servletWebRequest, true);
+ attributes.forEach((attribute, value) -> {
+ logger.warn("handleError: {} -> {}", attribute, value);
+ });
+ // Return the name of the page INCLUDING suffix, which I guess is a "view" name.
+ // Just "error" is not enough, but don't seem to need a ModelAndView object.
+ return "error.html";