1 18 package org.apache.beehive.netui.tags.html; 19 20 import org.apache.beehive.netui.util.internal.InternalStringBuilder; 21 22 import org.apache.beehive.netui.pageflow.internal.AdapterManager; 23 import org.apache.beehive.netui.tags.AbstractSimpleTag; 24 import org.apache.beehive.netui.util.HtmlExceptionFormatter; 25 import org.apache.struts.Globals; 26 import org.apache.struts.util.ResponseUtils; 27 28 import javax.servlet.ServletRequest ; 29 import javax.servlet.jsp.JspException ; 30 import javax.servlet.jsp.PageContext ; 31 32 42 public class Exceptions extends AbstractSimpleTag 43 { 44 private boolean _showMessage = true; 45 private boolean _showStackTrace = false; 46 private boolean _showDevModeStackTrace = false; 47 48 51 public String getTagName() 52 { 53 return "Exceptions"; 54 } 55 56 65 public void setShowMessage(boolean showMessage) 66 { 67 _showMessage = showMessage; 68 } 69 70 79 public void setShowStackTrace(boolean showStackTrace) 80 { 81 _showStackTrace = showStackTrace; 82 } 83 84 94 public void setShowDevModeStackTrace(boolean showStackTrace) 95 { 96 _showDevModeStackTrace = showStackTrace; 97 } 98 99 103 public void doTag() 104 throws JspException 105 { 106 InternalStringBuilder results = new InternalStringBuilder(128); 110 PageContext pageContext = getPageContext(); 111 Throwable e = (Throwable ) pageContext.getAttribute(Globals.EXCEPTION_KEY, PageContext.REQUEST_SCOPE); 112 113 if (e == null) { 114 ServletRequest req = pageContext.getRequest(); 115 e = (Throwable ) req.getAttribute("javax.servlet.error.exception"); 116 if (e == null) { 117 e = (Throwable ) req.getAttribute("javax.servlet.jsp.jspException"); 118 } 119 } 120 121 if (!_showStackTrace && _showDevModeStackTrace) { 122 boolean devMode = !AdapterManager.getServletContainerAdapter(pageContext.getServletContext()).isInProductionMode(); 123 if (devMode) 124 _showStackTrace = true; 125 } 126 127 if (e != null) { 128 if (_showMessage) { 129 String msg = e.getMessage(); 130 if ((msg != null) && (msg.length() > 0)) { 132 if (!_showStackTrace) 133 msg = e.getClass().getName() + ": " + msg; 134 results.append(HtmlExceptionFormatter.format(msg, e, _showStackTrace)); 135 } 136 else { 137 results.append(HtmlExceptionFormatter.format(e.getClass().getName(), e, _showStackTrace)); 138 } 139 } 140 else { 141 results.append(HtmlExceptionFormatter.format(null, e, _showStackTrace)); 142 } 143 ResponseUtils.write(pageContext, results.toString()); 144 } 145 } 146 } 147 | Popular Tags |