隨筆-2  評論-0  文章-0  trackbacks-0
          /**
           * @author yzy
           * 作為BaseAction 供其他Action 繼承, 其他Action 不需要寫execute(mapping, form, request, response)
           * 方法,直接寫與mapping.getParameter()[struts-xml 的<action> 中parameter] 對應的 方法名(mapping, form, request, response)方法;
           *
           * 或者mapping.getPath()[struts-xml 的<action> 中path] 固定寫為 method_0,直接寫與mapping.getParameter()對應的
           * 方法名(String ... str)方法
           */

          @Override
           public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
                    actionForward = mapping.findForward("forward");
            
                    if("method_0".equals(mapping.getPath())){
                             method_0(mapping, form, request, response);
                    } else {
               
                    try {
                  // 正常Struts 方法名(ActionMapping mapping, ActionForm form, 
                  //     HttpServletRequest request, HttpServletResponse response)

                              this.getClass().getMethod(mapping.getParameter(), ActionMapping.class, ActionForm.class, 
                                        HttpServletRequest.class, HttpServletResponse.class).invoke(this, mapping, form, request, response);
                     } catch (Exception e) {
                              System.err.println("no serach method");
                     }
            }
            
                    return actionForward;
           }
           /*
            * 方法名(String ... str)
            */
           private void method_0(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
                    String param = request.getQueryString();
                    String[] params = param.split("&");
                    int len = params.length;
                    Class[] classes = new Class[len - 1];
                    for(int i = 0; i < len; i++){
                             classes[i] = String.class;
                    }
            
                    try {
                             this.getClass().getMethod(mapping.getParameter(), classes).invoke(this, params);
                    } catch (Exception e) {
                             System.err.println("no serach method"); // str[] 可能參數個數不一致
                    }
            
           }
          posted on 2009-12-15 19:52 秒速4鍵 閱讀(310) 評論(0)  編輯  收藏 所屬分類: struts

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 通城县| 湘乡市| 兴海县| 上栗县| 兰考县| 瑞金市| 简阳市| 藁城市| 衡山县| 台东市| 绥化市| 通河县| 栖霞市| 仁化县| 衡南县| 商水县| 上高县| 红安县| 濉溪县| 视频| 墨江| 湟源县| 平原县| 磐石市| 都安| 莱芜市| 城步| 阜宁县| 镇康县| 长子县| 名山县| 闻喜县| 泸西县| 山西省| 中方县| 梅河口市| 平顶山市| 新丰县| 荣昌县| 巴楚县| 彭阳县|