風(fēng)人園

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

          導(dǎo)航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(11)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          收藏夾

          友情鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          ECP--之信息提示

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

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

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

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

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

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

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


          /*
          彈出窗口
          endtarget: string 目標(biāo)窗口
          無返回
          */

          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的回調(diào)函數(shù)
          根據(jù)傳入的json格式,賦值相應(yīng)的域值

          cmp:string 域id
          retval :json 所選行的數(shù)據(jù)
          無返回
          */

          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上的參數(shù)
          返回: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;
          }
                      

          /*
          行雙擊方法,用戶選擇行數(shù)據(jù)。
          通過回調(diào)函數(shù),完成賦值,最后關(guān)閉窗口
          rtnval: string 行數(shù)據(jù)
          */

          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,并通過循環(huán)域id從返回值中獲取數(shù)據(jù),并進行賦值。

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

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

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

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


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

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

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

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

          ibatis3及代碼生成工具試用

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

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

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

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

          ECP--舊系統(tǒng)維護之感慨

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

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

          SpringSecurity見解

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

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

          ECP--安全控制

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

          1、 登錄action/spring_security_login

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

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

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

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

          Ext.data.jsonReader的格式

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

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

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

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

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

          ECP--Ext grid

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

          今天的成果就是異步的grid實現(xiàn),效果是不錯。現(xiàn)在剩下按鈕操作與grid的結(jié)合的問題。明天繼續(xù)努力。

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

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

          ECApp--產(chǎn)品主數(shù)據(jù)操作界面

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

          繼續(xù)看效果圖


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

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

          僅列出標(biāo)題
          共10頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 布拖县| 隆昌县| 建湖县| 南宁市| 抚宁县| 马尔康县| 习水县| 乌兰浩特市| 乌苏市| 祁门县| 元朗区| 彩票| 中卫市| 新竹县| 黄大仙区| 萨迦县| 吉木乃县| 乡城县| 汝城县| 徐州市| 肃北| 确山县| 盱眙县| 南木林县| 崇左市| 太湖县| 六枝特区| 滁州市| 布尔津县| 长沙市| 奈曼旗| 宜章县| 库尔勒市| 井陉县| 垦利县| 翁源县| 巫溪县| 万州区| 灵武市| 平顺县| 家居|