DispatcherPortlet copies all action parameters to render parameters in case of an action exception (SPR-7495); shortened Portlet MVC's action exception render parameter value to "true"
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3647 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
2b9c71d317
commit
f569ebfb52
|
|
@ -19,6 +19,7 @@ package org.springframework.web.portlet;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -647,7 +648,16 @@ public class DispatcherPortlet extends FrameworkPortlet {
|
||||||
triggerAfterActionCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);
|
triggerAfterActionCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);
|
||||||
// Forward the exception to the render phase to be displayed.
|
// Forward the exception to the render phase to be displayed.
|
||||||
try {
|
try {
|
||||||
response.setRenderParameter(ACTION_EXCEPTION_RENDER_PARAMETER, ex.toString());
|
// Copy all parameters unless overridden in the action handler.
|
||||||
|
Enumeration<String> paramNames = request.getParameterNames();
|
||||||
|
while (paramNames.hasMoreElements()) {
|
||||||
|
String paramName = paramNames.nextElement();
|
||||||
|
String[] paramValues = request.getParameterValues(paramName);
|
||||||
|
if (paramValues != null && !response.getRenderParameterMap().containsKey(paramName)) {
|
||||||
|
response.setRenderParameter(paramName, paramValues);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response.setRenderParameter(ACTION_EXCEPTION_RENDER_PARAMETER, Boolean.TRUE.toString());
|
||||||
request.getPortletSession().setAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE, ex);
|
request.getPortletSession().setAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE, ex);
|
||||||
logger.debug("Caught exception during action phase - forwarding to render phase", ex);
|
logger.debug("Caught exception during action phase - forwarding to render phase", ex);
|
||||||
}
|
}
|
||||||
|
|
@ -921,7 +931,7 @@ public class DispatcherPortlet extends FrameworkPortlet {
|
||||||
triggerAfterEventCompletion(mappedHandler, interceptorIndex, request, response, ex);
|
triggerAfterEventCompletion(mappedHandler, interceptorIndex, request, response, ex);
|
||||||
// Forward the exception to the render phase to be displayed.
|
// Forward the exception to the render phase to be displayed.
|
||||||
try {
|
try {
|
||||||
response.setRenderParameter(ACTION_EXCEPTION_RENDER_PARAMETER, ex.toString());
|
response.setRenderParameter(ACTION_EXCEPTION_RENDER_PARAMETER, Boolean.TRUE.toString());
|
||||||
request.getPortletSession().setAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE, ex);
|
request.getPortletSession().setAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE, ex);
|
||||||
logger.debug("Caught exception during event phase - forwarding to render phase", ex);
|
logger.debug("Caught exception during event phase - forwarding to render phase", ex);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue