Hey guys,
I have written an AbstractServlet implementation to handle a variety of different servlet calls (doPost method below). I intend for this servlet to return an error message -- specifically the failureMessage property -- when a 500 is thrown, but instead I am getting the default 500 page (image attached) as the response... On my local dispatcher instance, I was able to bypass this page by setting the status to 499, but said approach is not working in the hosted staging environment (maybe something to do w/ local vs. cloud service setup). Does anybody have any experience writing a similar implementation / dealing with a similar issue? Thanks for any and all insight
Code:
protected void doPost(@NotNull SlingHttpServletRequest request, @notnull SlingHttpServletResponse response) throws IOException {
response.setContentType("application/json");
T requestData = getRequestData(request);
if (requestData == null || !isValidRequest(requestData)) {
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
response.getWriter().write(new ObjectMapper().writeValueAsString(new ServletError("Expected parameter is missing")));
return;
}
boolean result = performAction(requestData);
if (result) {
response.getWriter().write(new ObjectMapper().writeValueAsString(new ServletSuccess(getSuccessMessage())));
} else {
response.setStatus(499);
response.getWriter().write(new ObjectMapper().writeValueAsString(new ServletSuccess(getFailureMessage())));
}
}
Solved! Go to Solution.