Chinaunix首页 | 论坛 | 博客
  • 博客访问: 554415
  • 博文数量: 855
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-16 19:08
文章分类

全部博文(855)

文章存档

2011年(1)

2008年(854)

我的朋友

分类:

2008-10-16 19:25:09

    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---------------------

阅读(272) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~