* 编写整个系统统一的异常类:SystemException
package com.bjsxt.oa;
public class SystemException extends RuntimeException {
private static final long serialVersionUID = -335620998894315124L;
private String messageKey;
private String[] messageArgs;
public SystemException() {
super();
}
public SystemException(String message, Throwable throwable) {
super(message, throwable);
}
public SystemException(String message) {
super(message);
}
public SystemException(Throwable throwable) {
super(throwable);
}
public SystemException(String messageKey, String message) {
super(message);
this.messageKey = messageKey;
}
public SystemException(String messageKey, String messageArgs, String message) {
super(message);
this.messageKey = messageKey;
this.messageArgs = new String[] { messageArgs };
}
public SystemException(String messageKey, String[] messageArgs,
String message) {
super(message);
this.messageKey = messageKey;
this.messageArgs = messageArgs;
}
public String getMessageKey() {
return messageKey;
}
public String[] getMessageArgs() {
return messageArgs;
}
}
* 实现对异常的处理,为一个struts2的interceptor:SystemExceptionInterceptor
package com.bjsxt.oa.web;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.bjsxt.oa.SystemException;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.ValueStack;
@SuppressWarnings("serial")
public class SystemExceptionInterceptor extends AbstractInterceptor {
private static final Log logger = LogFactory
.getLog(SystemExceptionInterceptor.class);
private String error;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
try {
return invocation.invoke();
} catch (SystemException systemException) {
logger.error("程序出现异常", systemException);
ValueStack valueStack = invocation.getInvocationContext()
.getValueStack();
ActionSupport actionSupport = (ActionSupport) invocation
.getAction();
exception(systemException, actionSupport, valueStack);
return Action.ERROR;
}
}
private void exception(SystemException systemException,
ActionSupport action, ValueStack valueStack) {
// 取出key值
String messageKey = systemException.getMessageKey();
String[] args = systemException.getMessageArgs();
if (messageKey == null) {
error = systemException.getMessage();
} else if (args != null && args.length > 0) {
error = action.getText(messageKey, args);
} else {
error = action.getText(messageKey);
}
//把值放到ValueStack中
valueStack.set("error", error);
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
* 编写struts2国际化文件:MessageResources.properties
# -- standard errors --
errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>
# -- validator --
errors.invalid={0} is invalid.
errors.maxlength={0} can not be greater than {1} characters.
errors.minlength={0} can not be less than {1} characters.
errors.range={0} is not in the range {1} through {2}.
errors.required={0} is required.
errors.byte={0} must be an byte.
errors.date={0} is not a date.
errors.double={0} must be an double.
errors.float={0} must be an float.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.short={0} must be an short.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
# -- other --
errors.cancel=Operation cancelled.
errors.detail={0}
errors.general=The process did not complete. Details should follow.
errors.token=Request could not be completed. Operation is not in sequence.
# -- welcome --
welcome.title=Struts Blank Application
welcome.heading=Welcome!
welcome.message=To get started on your own application, copy the struts-blank.war to a new WAR file using the name for your application. Place it in your container's "webapp" folder (or equivalent), and let your container auto-deploy the application. Edit the skeleton configuration files as needed, restart your container, and you are on your way! (You can find the application.properties file with this message in the /WEB-INF/src/java/resources folder.)
org.suborg.not.null=Org [{0}] has sub org,can't be deleted!
* 在struts.properties文件中为MessageResources.properties文件注册
struts.custom.i18n.resources=MessageResources
* 在struts.xml文件中进行配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="oa-default" extends="struts-default"> <interceptors> <interceptor name="systemExceptionInterceptor" class="systemExceptionInterceptor" /> <interceptor name="userPermissionInterceptor" class="userPermissionInterceptor" /> <interceptor name="loginInterceptor" class="loginInterceptor" /> <interceptor-stack name="mydefault"> <!-- 把异常处理放在第一 --> <interceptor-ref name="defaultStack" /> <interceptor-ref name="systemExceptionInterceptor" /> <interceptor-ref name="loginInterceptor" /> <interceptor-ref name="userPermissionInterceptor" /> </interceptor-stack> </interceptors> <global-results> <result name="pub_del_success"> common/pub_del_success.jsp </result> <result name="pub_add_success"> common/pub_add_success.jsp </result> <result name="pub_update_success"> common/pub_update_success.jsp </result> <result name="error">common/exception.jsp</result> <result name="login" type="redirect">/index.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="error" exception="java.lang.Exception"> </exception-mapping> </global-exception-mappings> </package> <package name="main" extends="oa-default"> <default-interceptor-ref name="mydefault" /> <!-- OrgAction.java --> <action name="orgList" class="orgAction" method="orgList"> <result name="success">org/index.jsp</result> <result name="select_org">org/select_org.jsp</result> </action> <action name="orgAddInput" class="orgAction" method="orgAddInput"> <result name="success">org/add_input.jsp</result> </action> <action name="orgAdd" class="orgAction" method="orgAdd" /> <action name="orgDel" class="orgAction" method="orgDel" /> <!-- PersonAction.java --> <action name="personDel" class="personAction" method="personDel" /> <action name="personAddInput" class="personAction" method="personAddInput"> <result name="success">person/add_input.jsp</result> </action> <action name="personAdd" class="personAction" method="personAdd" /> <action name="personUpdate" class="personAction" method="personUpdate" /> <action name="personUpdateInput" class="personAction" method="personUpdateInput"> <result name="success">person/update_input.jsp</result> </action> <action name="personList" class="personAction" method="personList"> <result name="success">person/index.jsp</result> </action> <!-- ModuleAction.java --> <action name="moduleDel" class="moduleAction" method="moduleDel" /> <action name="moduleAddInput" class="moduleAction" method="moduleAddInput"> <result name="success">module/add_input.jsp</result> </action> <action name="moduleAdd" class="moduleAction" method="moduleAdd" /> <action name="moduleUpdate" class="moduleAction" method="moduleUpdate" /> <action name="moduleUpdateInput" class="moduleAction" method="moduleUpdateInput"> <result name="success">module/update_input.jsp</result> </action> <action name="moduleList" class="moduleAction" method="moduleList"> <result name="success">module/index.jsp</result> </action> <!-- RoleAction.java --> <action name="roleDel" class="roleAction" method="roleDel" /> <action name="roleAddInput" class="roleAction" method="roleAddInput"> <result name="success">role/add_input.jsp</result> </action> <action name="roleAdd" class="roleAction" method="roleAdd" /> <action name="roleList" class="roleAction" method="roleList"> <result name="success">role/index.jsp</result> </action> <!-- UserAction.java --> <action name="userDel" class="userAction" method="userDel" /> <action name="userAddInput" class="userAction" method="userAddInput"> <result name="success">user/add_input.jsp</result> </action> <action name="userAdd" class="userAction" method="userAdd" /> <action name="userList" class="userAction" method="userList"> <result name="success">user/index.jsp</result> </action> <action name="userUpdate" class="userAction" method="userUpdate" /> <action name="userUpdateInput" class="userAction" method="userUpdateInput"> <result name="success">user/update_input.jsp</result> </action> <action name="userRoleList" class="userAction" method="userRoleList"> <result name="success">user/user_role_list.jsp</result> </action> <action name="userRoleInput" class="userAction" method="userRoleInput"> <result name="success">user/user_role_input.jsp</result> </action> <action name="addUserRole" class="userAction" method="addUserRole" /> <action name="delUserRole" class="userAction" method="delUserRole" /> <!-- AclAction.java --> <action name="authorize" class="aclAction" method="authorize"> <result name="success">acl/index.jsp</result> </action> <!-- IndexAction.java --> <action name="outlook" class="indexAction" method="outlook"> <result name="success">/outlook.jsp</result> </action> <action name="main" class="indexAction" method="main"> <result name="success">/main.jsp</result> </action> </package> <package name="login" extends="oa-default"> <!-- LoginAction.java --> <action name="login" class="loginAction" method="login"> <result name="success">/back_index.jsp</result> </action> </package> </struts>