1 自定義異常類 SystemException.java
public class SystemException extends RuntimeException{
//自定義key
private String key;
//自定義參數(shù)
private Object[] values;
//實(shí)現(xiàn)父類的構(gòu)造方法
public SystemException() {
super();
}
public SystemException(String message, Throwable cause) {
super(message, cause);
}
public SystemException(String message) {
super(message);
}
public SystemException(Throwable cause) {
super(cause);
}
//自定義構(gòu)造方法
public SystemException(String message, String key) {
super(message);
this.key=key;
}
//自定義構(gòu)造方法,帶一個(gè)參數(shù)
public SystemException(String message, String key,Object value) {
super(message);
this.key=key;
this.values=new Object[]{value};
}
//自定義構(gòu)造方法,帶多個(gè)參數(shù)
public SystemException(String message, String key,Object[] values) {
super(message);
this.key=key;
this.values=values;
}
//相應(yīng)的get方法
public String getKey() {
return key;
}
public Object[] getValues() {
return values;
}
}
2 自定義異常處理器 SystemExceptionHandler.java
//作用:截獲SystemException,并根據(jù)SystemException中的信息動(dòng)態(tài)創(chuàng)建ActionMessage等這些錯(cuò)誤信息,
將其存在request中
public class SystemExceptionHandler extends ExceptionHandler{
/**
* 處理SystemException異常
*/
@Override
public ActionForward execute(Exception ex,//拋出的異常
ExceptionConfig config,//struts-config.xml中的配置信息
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws ServletException {
ActionForward forward=null;
//創(chuàng)建ActionForward
if(config.getPath()!=null){
//有path屬性,則根據(jù)path創(chuàng)建
forward=new ActionForward(config.getPath());
}else {
//沒(méi)有path屬性,則根據(jù)input屬性創(chuàng)建
forward=mapping.getInputForward();
}
if(ex instanceof SystemException){
SystemException se=(SystemException)ex;
//key可有可無(wú),所以取出key進(jìn)行判斷
String key=se.getKey();
ActionMessage error=null;
//如果自定義的key為空,用struts的
if(key==null){
//拿出error.default和message,創(chuàng)建ActionMessage對(duì)象
error=new ActionMessage(config.getKey(),se.getMessage());
}else {
//如果自定義的key有值
if(se.getValues()!=null){
error=new ActionMessage(key,se.getValues());
}else {
//如果自定義的key有值,則根據(jù)key創(chuàng)建ActionMessage對(duì)象
error=new ActionMessage(key);
}
}
//將這個(gè)ActionMessage放到request中。key為自定義的,error為ActionMessage對(duì)象
//forward是要轉(zhuǎn)到什么地方,根據(jù)path屬性創(chuàng)建。"request"為scope的一個(gè),也可以
//用config.getScope()
this.storeException(request, key, error, forward, config.getScope());
return forward;
}
return super.execute(ex, config, mapping, form, request, response);
}
}
3 編寫配置文件 struts-config.xml
<global-exceptions>
<exception key="error.default"
type="java.lang.Exception"
scope="request"
path="/common/exception.jsp"
<!-- 自定義的異常處理類 -->
handler="org.oa.common.SystemExceptionHandler"/>
</global-exceptions>
4 編寫資源文件 ApplicationResources.properties
error.default={0}
error.org.del=Can't Del Orgnation,id is {0}!
5 業(yè)務(wù)代碼
throw new org.oa.common.SystemException("存在子機(jī)構(gòu),不允許刪除!","error.org.del",org.getOname());
posted on 2009-11-30 08:17
junly 閱讀(500)
評(píng)論(0) 編輯 收藏 所屬分類:
struts2/struts1.3/JSF