風人園

          弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
          隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(11)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          收藏夾

          友情鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          ECP--之信息提示

                  一般,系統中把提示信息保存在request中傳遞會頁面,但是有些情況是redirect的,這樣就導致了request失效。在ROR中,有一個scope是夸兩個request的,不知道那個是怎么實現的。
                  現在用session來代替這個東西,只是顯示完成之后,就立刻清除這個數據。感覺比較挫,只能湊合著用了。
                  每次新開發一個系統,如果不用現成的東西來做,都要搞很多很多東西,什么東西好像都要自己來,特別是頁面上的東西,感覺挺煩的。寫寫js,改改css,調調table/div。感覺挺無聊的。
                  總而言之,這樣子都是因為這家公司的it部門太弱了,幾乎沒有一點技術積累,這么多年了,什么東西都沒有留下,就留下了一堆垃圾,讓我改的挺郁悶的。現在正在用自己的東西重新。有些東西又沒法改,一些現成的組件也不一定能用,不能用的只能自己重新寫一遍,來實現這個功能。

                  作為一個技術部門,結果什么技術都沒有,感覺挺悲哀的,特別是一個技術部門的老大,結果是個門外漢,被手下人看不起,這個也挺慘的,作老大做成這樣,連死的心都有了,悲劇啊。

                  作為一個技術部門的主管,可以不做技術,但是不能不懂技術。這樣才能服眾。

          posted @ 2009-08-31 14:37 風人園 閱讀(161) | 評論 (0)編輯 收藏

          ECP--之彈出窗口解決方案(json傳遞)

                  在應用中,彈出式窗口選擇數據,這種解決方案是很普遍的。
                  彈出窗口,有兩種方式,一種是:showModalDialog,使用模式窗口,這種方式的好處有兩個地方,一、可以直接返回數據,二、在最前面顯示,避免用戶誤操作,窗口被遮蔽。
                  但是這種方式個人感覺比較致命的地方就是因為這個是一個對話框,在form提交的時候只能新開一個頁面(可能我沒有發現其他的方式)。但是也有其他的方式,如加iframe,但是這樣感覺頁面太煩了,需要兩個頁面才能實現,比較麻煩。

                  第二種:window.open,這種方式也有一個問題,就是會被當做廣告攔截掉,還算不是很致命。
          我的方案就是這個,下面上代碼。
          傳遞格式通過json,這樣我可以自己定義需要回填那些域,返回值這邊就是竟可能的完整。


          /*
          彈出窗口
          endtarget: string 目標窗口
          無返回
          */

          function fopenWindow(endtarget){
              window.open( endtarget, 
          """left=0, top=0, width=800px, height=600px, scrollbars=1, resizable=1, menubar=0, location=0, status=0, toolbar=0, " );
          }


          /*
          window.open的回調函數
          根據傳入的json格式,賦值相應的域值

          cmp:string 域id
          retval :json 所選行的數據
          無返回
          */

          function fopenCallback(cmp, retval){
              
              
          //alert("call back start." + cmp);
              var obj = eval('(' + cmp + ')');
              
              
          for(var e in obj ){
                  
          //alert(obj[e]);
                  document.getElementById(obj[e]).value = retval[obj[e]]
              }

          }


          window.openCallback 
          = fopenCallback;

          /* 
          獲取url上的參數
          返回:key value 對
          */

          function GetUrlParms()    
          {
              
          var args=new Object();   
              
          var query=location.search.substring(1);//獲取查詢串   
              var pairs=query.split("&");//在逗號處斷開   
              for(var i=0;i<pairs.length;i++)   
              
          {   
                  
          var pos=pairs[i].indexOf('=');//查找name=value   
                  if(pos==-1)   continue;//如果沒有找到就跳過   
                  var argname=pairs[i].substring(0,pos);//提取name   
                  var value=pairs[i].substring(pos+1);//提取value   
                  args[argname]=unescape(value);//存為屬性   
              }

              
          return args;
          }
                      

          /*
          行雙擊方法,用戶選擇行數據。
          通過回調函數,完成賦值,最后關閉窗口
          rtnval: string 行數據
          */

          function Dialog_onDblClick(rtnval)
          {
              
          //var rtnval = {prodId: prodId, prodName: prodName};
               
              
          var args = new Object();
              args 
          = GetUrlParms();
              
          var cmp = args['cmp']
              
              window.opener.openCallback(cmp, rtnval); 
              window.close();
          }


          主頁面 域id通過json字符串跟url傳遞后彈出頁面
          function popProductDialog(){
              var endtarget = "<%=path%>/bas/product.do?method=dialog";
              var cmp = "{a: 'prodId', b: 'prodName'}";
                 //fshowModalDialog(endtarget, cmp);
                
                 fopenWindow(endtarget+ "&cmp=" + cmp);
                
             }

          彈出框
          function Document_onDblClick(value1,value2)
                      
          {
                          
          var rtnval = {clientId:value1, clientName:value2};    
                              Dialog_onDblClick(rtnval);

                      }
          彈出頁面解析獲得域id,并通過循環域id從返回值中獲取數據,并進行賦值。

          這里唯一需要變的就是,彈出頁面的返回值,可能因為需求的增加,需要返回更多的數據,或者就一次性將所有數據都作為json數據返回。

          這樣客戶在調用的時候,只要域id不超出返回字段的范圍,就可以正確使用了。

          posted @ 2009-08-31 10:39 風人園 閱讀(581) | 評論 (0)編輯 收藏

          ibatis3中感覺比2不方便的地方


          1、動態sql里面 原來的dynamic,現在沒有了,只能用is代替。但是if里面的判斷 沒有isEmpty這種方便的標簽,需要判斷需要同時判斷 null 和 ""。這個比較麻煩,希望能在正式版本中加上。

          2、annotion方式的評價,個人感覺沒有什么意義。從我來講,用iBATIS的主要原因是因為要處理比較復雜的sql,所以通常sql都會很長,就是因為不想通過字符串的方式寫在代碼里,要是寫在代碼里,直接用hibernate的原生sql就好了,何必還要用iBATIS呢。sql寫在xml里的好處是顯而易見的,可以直接將調試好的sql從sql的編輯器中復制過來,這樣可以省掉很多麻煩的事情,放在sql里面很長,又沒有辦法將格式弄好,要是換行什么的就更麻煩。

          一個比較有用好的改進就是namespace了,這個功能以前在2.X想用一直沒有用成。有了這個,很多通用的地方可以省略。

          posted @ 2009-08-26 16:30 風人園 閱讀(407) | 評論 (0)編輯 收藏

          ibatis3及代碼生成工具試用

                  ibatis3現在還是beta版,但是已經可以很好的使用了。
                  主要增強的方面有namespace這個東西,以前2的時候一直以為可以用的,結果沒有效果,害我還郁悶了半天,這樣以后就不會再有命名沖突了。
                  然后就是annotion的支持,這樣就可以不適用xml文件來保存sql了,但是感覺還是寫在xml里面比較舒服,特別是比較長的sql,個人感覺。
                  第三個就是動態sql的增強,增加很多有用的標簽。可以讓動態sql使用更加方便。
                  在看完之后暫時感覺有那么幾個比較好的改變,等正式版出來之后可能還有更多改進。

                  接著講下abator這個代碼生成工具,感覺還可以,生成的sqlmap配置文件還可以用下,其他的就算了,還是自己手寫吧。

                  最后提到一下ibatis-3-migrations,這個東西暫時還沒有看明白,好像是數據庫schema的一個管理工具。正在啃guide,看看到底有什么好處,上次看有個人的文章說,就是因為沒有這個東西才沒有用ibatis,所以這個東東應該很強大,我要看下。

          posted @ 2009-08-21 10:36 風人園 閱讀(849) | 評論 (1)編輯 收藏

          ECP--舊系統維護之感慨

                  這幾天再改老的EC系統,天啊,都快受不了了。我自認為我寫的已經算丑的了,沒想到有寫的丑到這個程度的也是一絕啊,而且這個還是一家國內還有點名氣的軟件公司的產品(中科軟sinosoft)。爺爺,當初是誰寫的,幫我問候一下他家先人。害我現在這么慘,看那個代碼,看了就想吐。
                  只要我還在這家公司做著,一定把這個系統給換了,什么玩意啊。軟件公司就知道賺錢,做出來的什么狗屁玩意。
                  在這里發發牢騷,實在是有點受不了了,改這些破東西,累啊。shit

          posted @ 2009-08-20 15:01 風人園 閱讀(174) | 評論 (0)編輯 收藏

          SpringSecurity見解

                  對于入門來說,這個東西還是挺簡單的,但是入門之后,這個事情還是挺復雜的。這里主要是看這個教程自己研究的http://www.family168.com/oa/springsecurity/html/index.html 
                  對于那個helloworld,確實是挺好的,讓人有了一個初步的認識。之后就是怎么把xml中的東西搬到數據庫中的問題。這個過程中還是有很多小問題的,經常出現不能訪問,訪問錯誤,配置不生效等等問題。畢業也是第一次弄這個東西。也是在springside中看到這個東西,而權限控制模塊也沒有什么應用,所以就決定用這個試一下。
                  試了一下例子,感覺確實不錯 ,有很多功能都可以迎刃而解,剩下的問題就是怎么把那些小問題都搞清楚。
                 現在一個比較麻煩的問題 就是資源的動態管理。新增配置只能在系統啟動的時候才生效。網上說要把數據refresh()一下,但是不知道在哪里refresh(),不知道到底要刷新那個數據。還得研究一下。
                  問題二、一個路徑,如果沒有加到資源的話,是不是應該叫匿名資源,這個資源是不是匿名用戶也可以訪問?

          posted @ 2009-08-18 10:53 風人園 閱讀(252) | 評論 (0)編輯 收藏

          ECP--安全控制

                  基礎數據的操作暫告一個段落,基本上差不多,后面可能還有一些小問題,要修修補補,暫時不弄了,呵呵,典型的喜新厭舊型,弄多了就有點煩,下面開始玩權限。
                  權限管理使用spring security 來進行,以前稍微看過,只是感覺挺復雜的,也沒有怎么仔細研究,這次一定要用,就好好研究下。這樣系統安全性才能有保障。
                  畢竟是第一次使用,使用的過程中還是有很多的問題的。下面就是一些小問題,需要注意一下的。
           

          1、 登錄action/spring_security_login

          2、 登出actionj_spring_security_logout (這兩個actionspringSecurity自帶的,直接用就可以了)

          3、 Filter的配置,在項目中,跟struts2一起使用,filter的前后順序有關系。Spring secutiry要放在struts2的前面,否則系統找不到securityaction

          4、 怎么獲取用戶信息:可以參考springside中的實現org.springside.modules.security.springsecurity.SpringSecurityUtils。具體信息都在Authentication這個類中。

          posted @ 2009-08-13 14:18 風人園 閱讀(230) | 評論 (0)編輯 收藏

          Ext.data.jsonReader的格式

          在Grid和Form進行異步載入的時候,一般都是用json來進行返回,這個時候就需要注意格式的問題。jsonReader的格式是固定的,都是一樣的
          {"data":[{"spec":"aa","id":1,"name":"aa","helpCode":null,"code":"aaa"}],"success":true}
          注意:data的數據是一個數組,不管是grid顯示還是form顯示,都是數組,只是grid有多條,而form就只需要一條而已,這個問題我也找了好一會兒。

          從代碼上看,grid和form調用的jsonReader是一樣,怎么格式有點不一樣,原來是這么個回事,兩者確實都是一樣的。

          經過這次之后,對jsonReader有了更深的了解,只要是異步,用jsonReader就好了,一般的問題都能搞定。

          特別是form的自己載入,這樣可以省掉很多事情。

          posted @ 2009-08-11 09:45 風人園 閱讀(2285) | 評論 (0)編輯 收藏

          ECP--Ext grid

          周末的時候給項目從新想了一個名字,ECP,(電子商務平臺),呵呵,自己陶醉用的。

          今天的成果就是異步的grid實現,效果是不錯。現在剩下按鈕操作與grid的結合的問題。明天繼續努力。

          工作越來越煩了,該死的破老大,一點不懂,就瞎指揮,要不是回家沒有地方去,早不干了。哎,繼續努力吧。早日完成這個項目,走人:)

          posted @ 2009-08-10 17:00 風人園 閱讀(183) | 評論 (0)編輯 收藏

          ECApp--產品主數據操作界面

                  又經過了半天多的努力,總算頁面基本操作都能實現了,下面就是完善操作及異常處理。
                  在window&form的操作上有些小問題。
                  還有就是grid的異步數據載入,暫時用array,下面考慮用json來異步實現。

          繼續看效果圖


          用ext做這種界面確實很爽,用戶體驗會很好,呵呵,我很喜歡這種淡淡的藍,看著養眼,舒服。

          posted @ 2009-08-07 15:01 風人園 閱讀(211) | 評論 (0)編輯 收藏

          僅列出標題
          共10頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 江油市| 冕宁县| 衡东县| 东乌| 平山县| 遂溪县| 伊宁县| 运城市| 灵璧县| 雅江县| 沭阳县| 沁阳市| 治县。| 乌拉特后旗| 韶关市| 陕西省| 天等县| 德庆县| 延津县| 团风县| 上栗县| 尖扎县| 兴义市| 政和县| 融水| 安仁县| 浙江省| 宜兰市| 阳西县| 东光县| 余干县| 涪陵区| 巴林左旗| 高台县| 张北县| 康保县| 南安市| 南木林县| 伊宁市| 西乌珠穆沁旗| 连山|