Use request attribute if available for error message
Fixes gh-1762, gh-1731
This commit is contained in:
parent
e8b59b9e55
commit
7bac7370c8
|
@ -75,6 +75,7 @@ public class DefaultErrorAttributes implements ErrorAttributes, HandlerException
|
|||
|
||||
private void storeErrorAttributes(HttpServletRequest request, Exception ex) {
|
||||
request.setAttribute(ERROR_ATTRIBUTE, ex);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -120,7 +121,7 @@ public class DefaultErrorAttributes implements ErrorAttributes, HandlerException
|
|||
addStackTrace(errorAttributes, error);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (error==null || errorAttributes.get("message")==null) {
|
||||
Object message = getAttribute(requestAttributes,
|
||||
"javax.servlet.error.message");
|
||||
errorAttributes.put("message", message == null ? "No message available"
|
||||
|
|
|
@ -118,6 +118,17 @@ public class DefaultErrorAttributesTests {
|
|||
assertThat(attributes.get("message"), equalTo((Object) "Test"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nullMessage() throws Exception {
|
||||
this.request.setAttribute("javax.servlet.error.exception", new RuntimeException());
|
||||
this.request.setAttribute("javax.servlet.error.message", "Test");
|
||||
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(
|
||||
this.requestAttributes, false);
|
||||
assertThat(attributes.get("exception"),
|
||||
equalTo((Object) RuntimeException.class.getName()));
|
||||
assertThat(attributes.get("message"), equalTo((Object) "Test"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unwrapServletException() throws Exception {
|
||||
RuntimeException ex = new RuntimeException("Test");
|
||||
|
|
Loading…
Reference in New Issue