struts通用Exception处理 自定义一个Exception类继承自RunTimeException,定义属性key、values等,并实现多个构造方法用于初始化。 如:
private String key;
private Object values;
//带key和参数
public SystemException(String message,String key,Object value){
super(message);
this.key=key;
this.values=new Object[]{value};
}
//带key和参数数组
public SystemException(String message,String key,Object values[]){
super(message);
this.key=key;
this.values=values;
}
public SystemException(String message,String key) {
super(message);
}
struts-config.xml配置
在ExceptionHandler中实现附加参数等处理,如SystemExceptionHandler继承ExceptionHandler重写execute方法: 代码
public ActionForward execute(Exception ex, ExceptionConfig ec,
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws ServletException {
ActionForward forward=null;
if(ec.getPath()!=null){
forward=new ActionForward(ec.getPath());
}else{
forward=mapping.getInputForward();
}
logger.debug("出现异常",ex);
if (ex instanceof SystemException) {
SystemException se = (SystemException) ex;
String key=se.getKey();
ActionMessage error=null;
if(key==null){
//无参,输入message
error=new ActionMessage(key,se.getMessage());
}else{
if(se.getValues()!=null){
//带参
error=new ActionMessage(key,se.getValues());
}else{
//不带参
error=new ActionMessage(key);
}
}
//置error入 collection under Globals.ERROR_KEY.
this.storeException(request, key, error, forward, ec.getScope());
return forward;
}
//默认 Handle the Exception.
//Return the ActionForward instance (if any) returned by the called ExceptionHandler
return super.execute(ex, ec, mapping, form, request, response);
【责编:landy】
--------------------next---------------------