41 lines
1.5 KiB
Java
41 lines
1.5 KiB
Java
package org.apache.struts.action;
|
|
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import org.apache.struts.config.ExceptionConfig;
|
|
import org.apache.struts.util.ModuleException;
|
|
|
|
public class ExceptionHandler {
|
|
public ActionForward execute(Exception ex, ExceptionConfig ae, ActionMapping mapping, ActionForm formInstance, HttpServletRequest request, HttpServletResponse response) throws ServletException {
|
|
ActionForward forward = null;
|
|
ActionError error = null;
|
|
String property = null;
|
|
if (ae.getPath() != null) {
|
|
forward = new ActionForward(ae.getPath());
|
|
} else {
|
|
forward = mapping.getInputForward();
|
|
}
|
|
if (ex instanceof ModuleException) {
|
|
error = ((ModuleException)ex).getError();
|
|
property = ((ModuleException)ex).getProperty();
|
|
} else {
|
|
error = new ActionError(ae.getKey(), ex.getMessage());
|
|
property = error.getKey();
|
|
}
|
|
request.setAttribute("org.apache.struts.action.EXCEPTION", ex);
|
|
storeException(request, property, error, forward, ae.getScope());
|
|
return forward;
|
|
}
|
|
|
|
protected void storeException(HttpServletRequest request, String property, ActionError error, ActionForward forward, String scope) {
|
|
ActionErrors errors = new ActionErrors();
|
|
errors.add(property, error);
|
|
if ("request".equals(scope)) {
|
|
request.setAttribute("org.apache.struts.action.ERROR", errors);
|
|
} else {
|
|
request.getSession().setAttribute("org.apache.struts.action.ERROR", errors);
|
|
}
|
|
}
|
|
}
|