From 7cd454ac96e69fe7b3532460ac7fe7d9128cce8b Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Thu, 11 Oct 2012 12:55:53 +0000 Subject: [PATCH] WW-3609 changes how problem report is rendered and in case of exception sends simple error message git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1397027 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/struts2/dispatcher/Dispatcher.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java index d30962e0c..b623e84f6 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java @@ -76,6 +76,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -820,8 +822,6 @@ public class Dispatcher { if (LOG.isDebugEnabled()) { LOG.debug("Exception occurred during processing request: #0", e, e.getMessage()); } - response.setContentType("text/html"); - try { FreemarkerManager mgr = getContainer().getInstance(FreemarkerManager.class); @@ -840,14 +840,19 @@ public class Dispatcher { data.put("unknown", Location.UNKNOWN); data.put("chain", chain); data.put("locator", new Locator()); - template.process(data, response.getWriter()); + + Writer writer = new StringWriter(); + template.process(data, writer); + + response.setContentType("text/html"); + response.getWriter().write(writer.toString()); response.getWriter().close(); } catch (Exception exp) { try { if (LOG.isDebugEnabled()) { LOG.debug("Cannot show problem report!", exp); } - response.sendError(code, "Unable to show problem report: " + exp); + response.sendError(code, "Unable to show problem report:\n" + exp + "\n\n" + LocationUtils.getLocation(exp)); } catch (IOException ex) { // we're already sending an error, not much else we can do if more stuff breaks }