int i=1/0;
<action name="czy_save" class="com.qbz.struts2_02.GG_CZY" method="save">
<exception-mapping result="ArithmeticException" exception="java.lang.ArithmeticException"></exception-mapping>
<result name="ArithmeticException">/WEB-INF/page/Input.jsp</result>
<result name="save">/WEB-INF/page/Show.jsp</result>
</action>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<form action="czy_save.action" method="post">
<s:debug></s:debug><br>
<s:property value="exception"/><br>
<s:property value="exception.message"/><br>
编号:<input type="text" name="dlh"/><br>
姓名:<input type="text" name="name"/><br>
部门:<input type="text" name="bmmc"/><br>
<input type="submit" value="保存"/>
</form>
</body>
</html>
<default-interceptor-ref name="defaultStack"/>
public class ExceptionMappingInterceptor extends AbstractInterceptor {
//省略......
@Override
public String intercept(ActionInvocation invocation) throws Exception {
String result;
try {
result = invocation.invoke();
} catch (Exception e) {
if (isLogEnabled()) {
handleLogging(e);
}
List<ExceptionMappingConfig> exceptionMappings = invocation.getProxy().getConfig().getExceptionMappings();
ExceptionMappingConfig mappingConfig = this.findMappingFromExceptions(exceptionMappings, e);
if (mappingConfig != null && mappingConfig.getResult()!=null) {
Map parameterMap = mappingConfig.getParams();
// create a mutable HashMap since some interceptors will remove parameters, and parameterMap is immutable
invocation.getInvocationContext().setParameters(new HashMap<String, Object>(parameterMap));
result = mappingConfig.getResult();
publishException(invocation, new ExceptionHolder(e));
} else {
throw e;
}
}
return result;
}
//省略......
/**
* Default implementation to handle ExceptionHolder publishing. Pushes given ExceptionHolder on the stack.
* Subclasses may override this to customize publishing.
*
* @param invocation The invocation to publish Exception for.
* @param exceptionHolder The exceptionHolder wrapping the Exception to publish.
*/
protected void publishException(ActionInvocation invocation, ExceptionHolder exceptionHolder) {
invocation.getStack().push(exceptionHolder);
}
}
<global-results>
<result name="ArithmeticException">/WEB-INF/page/Input.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="ArithmeticException" exception="java.lang.ArithmeticException"></exception-mapping>
</global-exception-mappings>