Author: carlucci
Date: Tue Oct 9 20:07:23 2012
New Revision: 1396275
URL: http://svn.apache.org/viewvc?rev=1396275&view=rev
Log:
Rave-806: Friendly error message page with option to render stack trace as an
admin preference. Patch supplied by Daniel Gornstein
Added:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ShowStackTraceTag.java
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/ShowStackTraceTagTest.java
Modified:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/PortalPreferenceForm.java
rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
rave/trunk/rave-portal-resources/src/main/resources/messages.properties
rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties
rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/db/initial_data.sql
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/preferencedetail.jsp
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/error.jsp
Modified:
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
(original)
+++
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
Tue Oct 9 20:07:23 2012
@@ -30,4 +30,5 @@ public final class PortalPreferenceKeys
public static final String INITIAL_WIDGET_STATUS = "initialWidgetStatus";
public static final String EXTERNAL_MARKETPLACE_URL =
"externalMarketplaceUrl";
public static final String WIDGET_HEIGHT = "defaultWidgetHeight";
+ public static final String SHOW_STACK_TRACE = "showStackTrace";
}
Modified:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/PortalPreferenceForm.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/PortalPreferenceForm.java?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/PortalPreferenceForm.java
(original)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/model/PortalPreferenceForm.java
Tue Oct 9 20:07:23 2012
@@ -36,7 +36,8 @@ public class PortalPreferenceForm {
public static final String DEFAULT_JAVASCRIPT_DEBUG_MODE = "1";
public static final String DEFAULT_WIDGET_HEIGHT = "250";
public static final String DEFAULT_INITIAL_WIDGET_STATUS = "PREVIEW";
- public static final String DEFAULT_EXTERNAL_MARKETPLACE_URL = "";
+ public static final String DEFAULT_EXTERNAL_MARKETPLACE_URL = "";
+ public static final String DEFAULT_SHOW_STACK_TRACE ="0";
private Map<String, PortalPreference> preferenceMap;
@@ -66,6 +67,9 @@ public class PortalPreferenceForm {
if(getDefaultWidgetHeight() == null){
preferenceMap.put(WIDGET_HEIGHT, new
PortalPreferenceImpl(WIDGET_HEIGHT, DEFAULT_WIDGET_HEIGHT));
}
+ if(getShowStackTrace() == null){
+ preferenceMap.put(SHOW_STACK_TRACE, new
PortalPreferenceImpl(SHOW_STACK_TRACE, DEFAULT_SHOW_STACK_TRACE));
+ }
}
public PortalPreference getExternalMarketplaceUrl() {
@@ -96,6 +100,14 @@ public class PortalPreferenceForm {
preferenceMap.put(WIDGET_HEIGHT, widgetHeight);
}
+ public PortalPreference getShowStackTrace(){
+ return preferenceMap.get(SHOW_STACK_TRACE);
+ }
+
+ public void setShowStackTrace(PortalPreference showStackTrace){
+ preferenceMap.put(SHOW_STACK_TRACE, showStackTrace);
+ }
+
public PortalPreference getTitleSuffix() {
return preferenceMap.get(TITLE_SUFFIX);
}
Added:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ShowStackTraceTag.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ShowStackTraceTag.java?rev=1396275&view=auto
==============================================================================
---
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ShowStackTraceTag.java
(added)
+++
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ShowStackTraceTag.java
Tue Oct 9 20:07:23 2012
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.rave.portal.web.tag;
+
+import org.apache.rave.portal.model.PortalPreference;
+import org.apache.rave.portal.service.PortalPreferenceService;
+import org.apache.rave.portal.web.util.PortalPreferenceKeys;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.jsp.JspException;
+
+/**
+ * JSP tag that renders the value of the ShowStackTrace portal preference
+ */
+public class ShowStackTraceTag extends
AbstractContextAwareSingletonBeanDependentTag<PortalPreferenceService> {
+ private Logger log = LoggerFactory.getLogger(getClass());
+ private final String SHOW_STACK_TRACE_OFF = "0";
+ private final String SHOW_STACK_TRACE_ON = "1";
+
+ public ShowStackTraceTag() {
+ super(PortalPreferenceService.class);
+ }
+
+ @Override
+ public int doStartTag() throws JspException {
+ writeString(getShowStackTraceValue());
+ return EVAL_BODY_INCLUDE;
+ }
+
+ private String getShowStackTraceValue() {
+ // default to off
+ String showStackTrace = SHOW_STACK_TRACE_OFF;
+ try {
+ PortalPreference debugModePref =
getBean().getPreference(PortalPreferenceKeys.SHOW_STACK_TRACE);
+ if (debugModePref != null &&
SHOW_STACK_TRACE_ON.equals(debugModePref.getValue())) {
+ showStackTrace = SHOW_STACK_TRACE_ON;
+ }
+ }
+ catch(Exception e) {
+ // if there are any errors we will revert to the default value
+ log.warn("unable to determine the value of portal preference '" +
PortalPreferenceKeys.SHOW_STACK_TRACE + "'. Defaulting to '" +
SHOW_STACK_TRACE_OFF + "'", e);
+ }
+ finally {
+ return showStackTrace;
+ }
+ }
+}
Modified:
rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
(original)
+++ rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
Tue Oct 9 20:07:23 2012
@@ -95,4 +95,10 @@
<tag-class>org.apache.rave.portal.web.tag.JavaScriptDebugModeTag</tag-class>
<body-content>JSP</body-content>
</tag>
+ <tag>
+ <description>Renders the value of the ShowStackTrace portal
preference</description>
+ <name>render-show-stack-trace</name>
+ <tag-class>org.apache.rave.portal.web.tag.ShowStackTraceTag</tag-class>
+ <body-content>JSP</body-content>
+ </tag>
</taglib>
Added:
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/ShowStackTraceTagTest.java
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/ShowStackTraceTagTest.java?rev=1396275&view=auto
==============================================================================
---
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/ShowStackTraceTagTest.java
(added)
+++
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/ShowStackTraceTagTest.java
Tue Oct 9 20:07:23 2012
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.rave.portal.web.tag;
+
+import org.apache.rave.portal.model.PortalPreference;
+import org.apache.rave.portal.model.impl.PortalPreferenceImpl;
+import org.apache.rave.portal.service.PortalPreferenceService;
+import org.apache.rave.portal.web.util.PortalPreferenceKeys;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.web.context.WebApplicationContext;
+
+import javax.servlet.ServletContext;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.PageContext;
+import java.io.IOException;
+
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class ShowStackTraceTagTest {
+ private PortalPreferenceService service;
+ private ShowStackTraceTag tag;
+ private WebApplicationContext wContext;
+ private PageContext pageContext;
+ private ServletContext servletContext;
+ private JspWriter writer;
+
+ final String SHOW_STACK_TRACE_ON = "1";
+ final String SHOW_STACK_TRACE_OFF = "0";
+
+ @Before
+ public void setup() throws JspException {
+ service = createMock(PortalPreferenceService.class);
+ wContext = createNiceMock(WebApplicationContext.class);
+ pageContext = createNiceMock(PageContext.class);
+ servletContext = createNiceMock(ServletContext.class);
+ writer = createNiceMock(JspWriter.class);
+
+ tag = new ShowStackTraceTag();
+ tag.setPageContext(pageContext);
+ }
+
+ @Test
+ public void doStartTag_debugOn() throws IOException, JspException {
+ PortalPreference portalPreference = new
PortalPreferenceImpl(PortalPreferenceKeys.SHOW_STACK_TRACE,
SHOW_STACK_TRACE_ON);
+
+
expect(service.getPreference(PortalPreferenceKeys.SHOW_STACK_TRACE)).andReturn(portalPreference);
+
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+ expect(pageContext.getOut()).andReturn(writer);
+ replay(service, pageContext, servletContext, wContext, writer);
+
+ int result = tag.doStartTag();
+
+ assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+ verify(service, pageContext, servletContext, wContext, writer);
+ }
+
+ @Test
+ public void doStartTag_debugOff() throws IOException, JspException {
+ PortalPreference portalPreference = new
PortalPreferenceImpl(PortalPreferenceKeys.SHOW_STACK_TRACE,
SHOW_STACK_TRACE_OFF);
+
+
expect(service.getPreference(PortalPreferenceKeys.SHOW_STACK_TRACE)).andReturn(portalPreference);
+
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+ expect(pageContext.getOut()).andReturn(writer);
+ replay(service, pageContext, servletContext, wContext, writer);
+
+ int result = tag.doStartTag();
+
+ assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+ verify(service, pageContext, servletContext, wContext, writer);
+ }
+
+ @Test
+ public void doStartTag_exception() throws IOException, JspException {
+ PortalPreference portalPreference = new
PortalPreferenceImpl(PortalPreferenceKeys.SHOW_STACK_TRACE,
SHOW_STACK_TRACE_OFF);
+
+
expect(service.getPreference(PortalPreferenceKeys.SHOW_STACK_TRACE)).andThrow(new
RuntimeException("error"));
+
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+ expect(pageContext.getOut()).andReturn(writer);
+ replay(service, pageContext, servletContext, wContext, writer);
+
+ int result = tag.doStartTag();
+
+ assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+ verify(service, pageContext, servletContext, wContext, writer);
+ }
+
+ @Test
+ public void doStartTag_nullPreference() throws IOException, JspException {
+ PortalPreference portalPreference = null;
+
+
expect(service.getPreference(PortalPreferenceKeys.SHOW_STACK_TRACE)).andReturn(portalPreference);
+
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+ expect(pageContext.getOut()).andReturn(writer);
+ replay(service, pageContext, servletContext, wContext, writer);
+
+ int result = tag.doStartTag();
+
+ assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+ verify(service, pageContext, servletContext, wContext, writer);
+ }
+
+ @Test
+ public void doStartTag_emptyPreference() throws IOException, JspException {
+ PortalPreference portalPreference = new
PortalPreferenceImpl(PortalPreferenceKeys.SHOW_STACK_TRACE, "");
+
+
expect(service.getPreference(PortalPreferenceKeys.SHOW_STACK_TRACE)).andReturn(portalPreference);
+
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+ expect(pageContext.getOut()).andReturn(writer);
+ replay(service, pageContext, servletContext, wContext, writer);
+
+ int result = tag.doStartTag();
+
+ assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+ verify(service, pageContext, servletContext, wContext, writer);
+ }
+}
Modified:
rave/trunk/rave-portal-resources/src/main/resources/messages.properties
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/resources/messages.properties?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/resources/messages.properties
(original)
+++ rave/trunk/rave-portal-resources/src/main/resources/messages.properties Tue
Oct 9 20:07:23 2012
@@ -284,10 +284,13 @@ admin.preferencedetail.externalMarketpla
admin.preferencedetail.titleSuffix=Page title suffix
admin.preferencedetail.pageSize=Number of items per page (list)
admin.preferencedetail.defaultWidgetHeight=Default widget height
+admin.preferencedetail.showStackTrace=Show stack trace on error pages
admin.preferencedetail.pageSize.malformed=Enter a whole number greater than 0
admin.preferencedetail.javaScriptDebugMode=JavaScript Debug Mode
admin.preferencedetail.javaScriptDebugMode.true=Enabled
admin.preferencedetail.javaScriptDebugMode.false=Disabled
+admin.preferencedetail.showStackTrace.true=Enabled
+admin.preferencedetail.showStackTrace.false=Disabled
admin.preferencedetail.updateButton=Update preferences
admin.preferencedetail.action.update.success=Preferences have been updated
admin.preferencedetail.goback=\u00ab Back to overview
Modified:
rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties
(original)
+++ rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties
Tue Oct 9 20:07:23 2012
@@ -285,11 +285,14 @@ admin.preferences.edit=Editar preferenci
admin.preferencedetail.title=Interfaz de administraci\u00F3n Rave -
Preferencias
admin.preferencedetail.titleSuffix=Sufijo del titulo de la pagina
admin.preferencedetail.defaultWidgetHeight=Altura predeterminada Widget
+admin.preferencedetail.showStackTrace=Mostrar seguimiento de pila en las
páginas de error
admin.preferencedetail.pageSize=Numero de items por pagina (lista)
admin.preferencedetail.pageSize.malformed=Entre un numero valido superior a 0
admin.preferencedetail.javaScriptDebugMode=Modo de Debug de JavaScript
admin.preferencedetail.javaScriptDebugMode.true=Habilitado
admin.preferencedetail.javaScriptDebugMode.false=Deshabilitado
+admin.preferencedetail.showStackTrace.true=Habilitado
+admin.preferencedetail.showStackTrace.false=Deshabilitado
admin.preferencedetail.updateButton=Actualizar preferencias
admin.preferencedetail.action.update.success=Las preferencias han sido
actualizadas
admin.preferencedetail.goback=u00AB Volver a la vista general
Modified:
rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
(original)
+++ rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
Tue Oct 9 20:07:23 2012
@@ -290,9 +290,12 @@ admin.preferencedetail.titleSuffix=Toevo
admin.preferencedetail.pageSize=Aantal items per pagina (lijst)
admin.preferencedetail.pageSize.malformed=Voer een geheel getal in groter dan 0
admin.preferencedetail.defaultWidgetHeight=Standaard widget hoogte
+admin.preferencedetail.showStackTrace=Toon stack trace op foutpagina's
admin.preferencedetail.javaScriptDebugMode=JavaScript Debug Mode
admin.preferencedetail.javaScriptDebugMode.true=Ingeschakeld
admin.preferencedetail.javaScriptDebugMode.false=Uitgeschakeld
+admin.preferencedetail.showStackTrace.true=Ingeschakeld
+admin.preferencedetail.showStackTrace.false=Uitgeschakeld
admin.preferencedetail.updateButton=Wijzig voorkeuren
admin.preferencedetail.action.update.success=De voorkeuren zijn bijgewerkt
admin.preferencedetail.goback=\u00AB Terug naar overzicht
Modified:
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/db/initial_data.sql
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/db/initial_data.sql?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
---
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/db/initial_data.sql
(original)
+++
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/db/initial_data.sql
Tue Oct 9 20:07:23 2012
@@ -1123,6 +1123,13 @@ values (@next_portal_preference_id, 'def
INSERT INTO portal_preference_values
values (@next_portal_preference_id, '250');
UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name =
@portal_preference_seq;
+
+set @next_portal_preference_id = (SELECT seq_count FROM RAVE_PORTAL_SEQUENCES
WHERE seq_name = @portal_preference_seq);
+INSERT INTO portal_preference (entity_id, preference_key)
+values (@next_portal_preference_id, 'showStackTrace');
+INSERT INTO portal_preference_values
+values (@next_portal_preference_id, '0');
+UPDATE RAVE_PORTAL_SEQUENCES SET seq_count = (seq_count + 1) WHERE seq_name =
@portal_preference_seq;
-- end portal preferences
-- category
Modified:
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/preferencedetail.jsp
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/preferencedetail.jsp?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
---
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/preferencedetail.jsp
(original)
+++
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/preferencedetail.jsp
Tue Oct 9 20:07:23 2012
@@ -88,6 +88,20 @@
<form:errors
path="javaScriptDebugMode.value" cssClass="error"/>
</spring:bind>
</div>
+ <div class="control-group">
+ <spring:bind path="showStackTrace.value">
+ <form:label path="showStackTrace.value"
class="control-label">
+ <fmt:message
key="admin.preferencedetail.showStackTrace"/> *
+ </form:label>
+ <div class="controls">
+ <form:select id="showStackTrace"
path="showStackTrace.value">
+ <form:option value="0"><fmt:message
key="admin.preferencedetail.showStackTrace.false"/></form:option>
+ <form:option value="1"><fmt:message
key="admin.preferencedetail.showStackTrace.true"/></form:option>
+ </form:select>
+ </div>
+ <form:errors path="showStackTrace.value"
cssClass="error"/>
+ </spring:bind>
+ </div>
<div class="control-group">
<spring:bind path="initialWidgetStatus.value">
<form:label
path="initialWidgetStatus.value" class="control-label">
Modified:
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/error.jsp
URL:
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/error.jsp?rev=1396275&r1=1396274&r2=1396275&view=diff
==============================================================================
---
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/error.jsp
(original)
+++
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/error.jsp
Tue Oct 9 20:07:23 2012
@@ -19,23 +19,24 @@
<%@ page isErrorPage="true" language="java" trimDirectiveWhitespaces="true" %>
<%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
<fmt:setBundle basename="messages"/>
+<c:set var="showStackTrace"><portal:render-show-stack-trace /></c:set>
<%-- Note: This page has the body definition embedded so we can reference it
from the web.xml file
and use it as the default error page for the entire application. --%>
<tiles:insertDefinition name="templates.base">
<tiles:putAttribute name="pageTitleKey" value="page.error.title"/>
<tiles:putAttribute name="body">
- <header>
- <h1>
- <fmt:message key="page.error.title" />
- </h1>
- </header>
- <div id="content" >
- <div id="errorMessage">
- <div class="errorMessage">
- <fmt:message key="page.error.message" />
- <a href="javascript:
window.location.reload();"><fmt:message key="page.error.reload" /></a>.<br/>
- <a
onclick="document.getElementById('errorStack').style.display =
'block';"><fmt:message key="page.error.details" /></a>
- </div>
+ <c:if test="${showStackTrace == 1}">
+ <rave:navbar/>
+ <header>
+ <h1>
+ <fmt:message key="page.error.title" />
+ </h1>
+ </header>
+ <div id="content" class="container-fluid navbar-spacer">
+ <div id="errorMessage" class="errorMessage">
+ <h2><fmt:message key="page.error.message" />
+ <a href="javascript:
window.location.reload();"><fmt:message key="page.error.reload"
/></a>.</h2><br/>
+ <a
onclick="document.getElementById('errorStack').style.display =
'block';"><fmt:message key="page.error.details" /></a>
</div>
<div id="errorStack" title="Error Details" >
<pre class="errorTrace">
@@ -50,5 +51,20 @@ and use it as the default error page for
</button>
</div>
</div>
+ </c:if>
+ <c:if test="${showStackTrace == 0}">
+ <rave:navbar/>
+ <header>
+ <h1>
+ <fmt:message key="page.error.title" />
+ </h1>
+ </header>
+ <div id="content" class="container-fluid navbar-spacer">
+ <div id="errorMessage" class="errorMessage">
+ <h2><fmt:message key="page.error.message" />
+ <a href="javascript:
window.location.reload();"><fmt:message key="page.error.reload"
/></a>.</h2><br/>
+ </div>
+ </div>
+ </c:if>
</tiles:putAttribute>
</tiles:insertDefinition>
\ No newline at end of file