隨筆-124  評論-49  文章-56  trackbacks-0

          1 自定義異常類 SystemException.java

          public class SystemException extends RuntimeException{
           //自定義key
           private String key;
           //自定義參數
           private Object[] values;

           //實現父類的構造方法
           public SystemException() {
            super();
           }

           public SystemException(String message, Throwable cause) {
            super(message, cause);
           }


           public SystemException(String message) {
            super(message);
           }


           public SystemException(Throwable cause) {
            super(cause);
           }

           //自定義構造方法
           public SystemException(String message, String key) {
            super(message);
            this.key=key;
           }

           //自定義構造方法,帶一個參數
           public SystemException(String message, String key,Object value) {
            super(message);
            this.key=key;
            this.values=new Object[]{value};
           }
           
           //自定義構造方法,帶多個參數
           public SystemException(String message, String key,Object[] values) {
            super(message);
            this.key=key;
            this.values=values;
           }
           
           //相應的get方法
           public String getKey() {
            return key;
           }

           public Object[] getValues() {
            return values;
           }
          }
          2 自定義異常處理器 SystemExceptionHandler.java

          //作用:截獲SystemException,并根據SystemException中的信息動態創建ActionMessage等這些錯誤信息,
                  將其存在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;
            //創建ActionForward
            if(config.getPath()!=null){
             //有path屬性,則根據path創建
             forward=new ActionForward(config.getPath());
            }else {
             //沒有path屬性,則根據input屬性創建
             forward=mapping.getInputForward();
            }
            if(ex instanceof SystemException){
             SystemException se=(SystemException)ex;
             //key可有可無,所以取出key進行判斷
             String key=se.getKey();
             ActionMessage error=null;
             //如果自定義的key為空,用struts的
             if(key==null){
              //拿出error.default和message,創建ActionMessage對象
              error=new ActionMessage(config.getKey(),se.getMessage());
             }else {
              //如果自定義的key有值
              if(se.getValues()!=null){
               error=new ActionMessage(key,se.getValues());
              }else {
               //如果自定義的key有值,則根據key創建ActionMessage對象
               error=new ActionMessage(key);
              }
             }
             //將這個ActionMessage放到request中。key為自定義的,error為ActionMessage對象
             //forward是要轉到什么地方,根據path屬性創建。"request"為scope的一個,也可以
             //用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 業務代碼

          throw new org.oa.common.SystemException("存在子機構,不允許刪除!","error.org.del",org.getOname());

          posted on 2009-11-30 08:17 junly 閱讀(504) 評論(0)  編輯  收藏 所屬分類: struts2/struts1.3/JSF
          主站蜘蛛池模板: 克拉玛依市| 武义县| 定西市| 若羌县| 绵竹市| 民丰县| 寿光市| 白山市| 曲阜市| 闻喜县| 雷州市| 云南省| 天水市| 青海省| 吴旗县| 澄迈县| 安阳县| 定远县| 凌海市| 迁安市| 岳池县| 宿迁市| 于田县| 团风县| 阿城市| 泸水县| 万载县| 庄浪县| 蓬莱市| 昌宁县| 武夷山市| 佛教| 高州市| 从江县| 墨脱县| 东丰县| 金溪县| 莱西市| 辉县市| 望城县| 古丈县|