<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

    #

    類代碼:
    /*************************
    *
    *   Class:CheckItem
    *   2009.08.23
    **************************/
    //-- Contructor
    function CheckItem(textboxName,msg,validChar,isRequired){
        this.textboxName=textboxName;
        this.msg=msg;
        this.validChar=validChar;
        this.isRequired=isRequired;
    }

    /*************************
    *
    *   Class:FormChecker
    *   2009.08.23
    **************************/
    //-- Contructor
    function FormChecker(){
        this.checkItemArray=new Array;
    }

    //-- Add a check Item to array
    FormChecker.prototype.addCheckItem=function(textboxName,msg,validChar,isRequired){
        var checkItem=new CheckItem(textboxName,msg,validChar,isRequired);
        this.checkItemArray[this.checkItemArray.length]=checkItem;
    }

    //-- Check text field in the form 
    FormChecker.prototype.checkTextBox=function(checkItem){
        var validChar=checkItem.validChar;
        var isRequired=checkItem.isRequired;
        var inputValue=$(checkItem.textboxName).value;
        
        if(isRequired!="true" && inputValue.length
    <1){
            return true;
        }
        else{
            var regexStr
    ="^"+validChar+"$";
            var regex
    =new RegExp(regexStr);
            return regex.test(inputValue);
        }
    }

    //-- judge the validation of a form
    FormChecker.prototype.isValid
    =function(){
        
    for(var i=0;i<this.checkItemArray.length;i++){
            
    var    toBeCheckedObj=this.checkItemArray[i];
            
            
    var checkResult=this.checkTextBox(toBeCheckedObj);
            
            
    if(checkResult==true){
                
    continue;
            }
            else{        
                alert(toBeCheckedObj.msg);
                $(toBeCheckedObj.textboxName).focus();
                
                return false;
            }                
        }

        return true;
    }


    頁面代碼:
    /*****************************************************
    * 窗口載入時調用的啟動函數
    *****************************************************/
    var formChecker;
    window.onload=function(){
        // 設置主菜單的當前菜單項
        setMainmenuCurrentItem(0);
        
        // 設置側邊菜單的當前菜單項
        setSidemenuCurrentItemByText("合同起草");
        
        // 取得合同類別的數據
        // 填充下拉列表框數據
        new TypeListbox("contractTypeFirst","0","contractTypeSecond","");
        new TypeListbox("contractTypeSecond",$("contractTypeFirst").value,"contractTypeThird","");
        
        // var today=getToday();
        // $("createTime").value=today; // 屏蔽了合同起草時間,故這里也屏蔽。何楊,2011年5月6日9:20:34
        // $("maintenanceEndTime").value=today;
        
        // 初始化檢查項
        formChecker=new FormChecker();
        formChecker.addCheckItem("contractName","請輸入一到一百位的合同名",".{1,100}","true");
        formChecker.addCheckItem("contractTypeThird","請點擊下拉列表框依次選擇合同類別",".{1,100}","true");
        formChecker.addCheckItem("contractAmount","請輸入數字形式的合同總金額(金額限制百億內)","([0-9]{1})(\\d{0,9})","true");
        formChecker.addCheckItem("vendorName","請點擊右邊圖標選擇合同對方名稱。",".{1,}","true");
        formChecker.addCheckItem("fulfillCycle","請輸入數字形式的合同履行期限,以月為單位(最多十位數字)","([1-9]{1})(\\d{0,9})","true");
        formChecker.addCheckItem("maintenanceStartTime","請點擊右邊的按鈕選擇模板選擇維保起始日期","(\\d{4})-(\\d{1,2})-(\\d{1,2})","false");
        formChecker.addCheckItem("maintenanceEndTime","請點擊右邊的按鈕選擇模板選擇維保結束日期","(\\d{4})-(\\d{1,2})-(\\d{1,2})","false");
        
        formChecker.addCheckItem("contractBriefFile","請輸入零到五百字的合同所屬項目概況或依據的文件",".{1,500}","false");
        formChecker.addCheckItem("contractDecision","請輸入零到一千字的項目決策過程",".{1,1000}","false");
        formChecker.addCheckItem("remark","請輸入零到兩百五十個字的補充說明",".{1,250}","false");
        formChecker.addCheckItem("maintenanceDescription","請輸入零到一千個字的維保描述",".{1,1000}","false");
    }

    /*********************************************************************
    *  得到表單的檢查結果
    *  何楊,2011-4-17 14:31:40
    *********************************************************************/
    function getCheckResult(){
        // 進行頁面輸入檢查
        if(formChecker.isValid()==false){
            return false;
        }
        
        // 維保起始日期
        var maintenanceStartTime=$("maintenanceStartTime").value;
        
        // 維保結束日期
        var maintenanceEndTime=$("maintenanceEndTime").value;
        
        // 維保起始日期和維保結束日期做比較
        if(isNotEmptyString(maintenanceStartTime)==true && isNotEmptyString(maintenanceEndTime)==true){
            if(isReasonable(maintenanceStartTime,maintenanceEndTime)==false){
                alert("維保結束日期必須晚于維保起始日期.");
                $("maintenanceEndTime").focus();
                return false;
            }
        }
        
        return true;
    }
    posted @ 2011-05-23 08:58 何楊 閱讀(235) | 評論 (0)編輯 收藏



    js類代碼:
    /*************************************
    *
    *   Class:ContractTypeListboxOne
    *   2011-5-18 20:08:00
    **************************************/
    //-- 構造函數
    function TypeListbox(id,parentId,nextId,nextParentId){
        this.id=id;
        this.parentId=parentId;
        this.nextId=nextId;
        this.nextParentId=nextParentId;
        
        this.init();
        this.fillData($(this.id),parentId);
    }

    //-- 初始化
    TypeListbox.prototype.init=function(){
        var ctrl=$(this.id);
        var me=this;
            
        ctrl.onchange=function(){
            me.changeEvent();
        }    
    }

    //-- 變化事件
    TypeListbox.prototype.changeEvent=function(){
        var ctrl=$(this.id);
        
        if(this.nextId.length>0 && this.nextId!="none"){
            this.fillData($(this.nextId),ctrl.value);
        }
    }

    //-- 填充數據
    TypeListbox.prototype.fillData=function(myListbox,parentId){
        /*if(parentId.length
    <|| parentId=="none"){
            
    return;
        }*/

        var url
    =encodeURI('GetContractType.do?parentId='+parentId);
        
    url=encodeURI(url);
        
        
    new Ajax.Request(url,{     
               method:'get',     
               onSuccess: function(ajaxObj){    
                      // alert(ajaxObj.responseText);  
                    var status
    =ajaxObj.responseXML.getElementsByTagName("status")[0].firstChild.data;
                                    
                    
    if(status=="ok"){
                        
    // 返回正確信息

                        // 找到所有節點放入數組,為避免麻煩,節點名統一都設置成node比較好,不用實例變了,這里就要改變一次。
                        var arr
    =ajaxObj.responseXML.getElementsByTagName("node");
                        
    var length=arr.length;

                        
    for(var i=myListbox.options.length-1;i>=0;i--){
                            myListbox.remove(i);
                        }
                        
                        var newOption=new Option;
                        newOption.value="";
                        newOption.text="--請選擇--";
                        myListbox.add(newOption);

                        if(length>0){
                            // 遍歷這個數組
                            for(var i=0;i
    <length;i++){
                                var node
    =arr[i];
                                                    
                                
    var id=node.getElementsByTagName("id")[0].firstChild.data;
                                
    var name=node.getElementsByTagName("name")[0].firstChild.data;
                                
                                
    var newOption=new Option;
                                newOption.value
    =id;
                                
    newOption.text=name;
                                
    myListbox.add(newOption);
                            }
                        }
                        
                        myListbox.selectedIndex
    =0;
                        
    myListbox.fireEvent("onchange");
                    }
                    else{
                        // 返回錯誤信息
                        var text
    =ajaxObj.responseXML.getElementsByTagName("text")[0].firstChild.data;
                        
    alert(text);
                    }
               },     
               onFailure: function(){ 
                   alert("無法取得服務器的響應");
               }   
            }
          ); 
    }


    頁面下拉列表框:

    <tr>

    <td width="100%" colspan="10">

    <div class="inputText">

    <label for="classOneCbo">合同類別:</label>

    <select id="classOneCbo">

    <option value="" selected>--請選擇--</option>

    </select>

    <font color="#003366">-</font>

    <select id="classTwoCbo">

    <option value="" selected>--請選擇--</option>

    </select>

    <font color="#003366">-</font>

    <select id="classThreeCbo">

    <option value="" selected>--請選擇--</option>

    </select>

    </div>

    </td>

    </tr>


    頁面JS初始化代碼:

    /*****************************************************

    * 窗口載入時調用的啟動函數

    * 何楊,2011年4月22日16:59:16

    *****************************************************/

    window.onload=function(){

    // 設置主菜單的當前菜單項

    setMainmenuCurrentItem(0);

    // 設置側邊菜單的當前菜單項

    setSidemenuCurrentItemByText("待辦事項");

    // 填充下拉列表框數據

    new TypeListbox("classOneCbo","0","classTwoCbo","");

    new TypeListbox("classTwoCbo",$("classOneCbo").value,"classThreeCbo","");

    // 開始檢索初始數據

    search(0);

    }




    posted @ 2011-05-19 14:50 何楊 閱讀(638) | 評論 (1)編輯 收藏

    <html>
        
    <head>
            
    <title>test</title>
        
    </head>
        
    <body>
            
    <select id="mySelect">
                
    <option value="1">地球</option>
                
    <option value="2">火星</option>
                
    <option value="3">木衛二</option>
                
    <option value="4">冥王星</option>
                
    <option value="5">參宿四</option>
                
    <option value="6">人馬座</option>
            
    </select>
        
    </body>
    </html>

    <script language="javascript">
    <!--
    window.onload
    =function(){
        
    var listBox=new ListBox("mySelect");
        
    }


    function $(id){
        
    return document.getElementById(id);
    }


    //-- 類構造函數
    function ListBox(id){
        
    this.id=id;
        
    this.init();    
    }

    //--類的初始化函數,將控件的onchange事件交給類的changeEvent事件處理
    ListBox.prototype.init=function(){
        
    var ctrl=$(this.id);
        
    var me=this;
            
        ctrl.onchange
    =function(){
            me.changeEvent();
        }

        
    }

    // onchange事件產生時彈出下拉列表控件的值
    ListBox.prototype.changeEvent=function(){
        
    var ctrl=$(this.id);
        alert(ctrl.value);
    }

    //-->
    </script>
    posted @ 2011-05-19 08:15 何楊 閱讀(211) | 評論 (0)編輯 收藏

    一般來說,出現這種異常是因為傳遞給遠程方法的參數不能實例化所致,比如有一個參數是復合類型,里面包括Calendar,Date,BigDecimal等形式的數據,需要把這些非基本類型的數據new出來賦值,然后再調用就好辦了。基本類型和String等數據則不用理會。



    posted @ 2011-04-09 21:16 何楊 閱讀(7767) | 評論 (0)編輯 收藏

    Table.stock tr{
        onmouseover 
    : expression(onmouseover=function (){this.style.backgroundColor ='#b3ddfb'}); 
        onmouseout  : expression(onmouseout=function () 
    {this.style.backgroundColor =''});
    }
    posted @ 2011-03-30 19:51 何楊 閱讀(371) | 評論 (0)編輯 收藏

    一.以目錄形式打開某個較深不易記憶的目錄。
    explorer  path
    例子:explorer C:\Program Files\IBM\SDP70\runtimes\base_v61\profiles\AppSrv01\logs\server1

    二.控制臺方式進入某個目錄。
    在此目錄下建一個bat文件,里面只寫cmd三個字。然后創建快捷方式到桌面就可以了。

    posted @ 2011-03-16 23:38 何楊 閱讀(219) | 評論 (0)編輯 收藏

    將程序從一個容器換到另一個容器,總會有各種意料之外的困難需要解決,近日本人需要將一個Web工程從Tomcat環境轉移到WebSphere環境,經歷了一番周折,特地將此經過記錄下來,也許它能對將要進行如此經歷的人其一點幫助作用,另外在此也向網絡同仁和工作中的同事表示感謝。

    原環境:
    程序:SSH
    容器:Tomcat6.0
    數據庫:MySql5

    新環境:
    程序:SSH
    容器:WebSphere6.1
    數據庫:Oracle10g

    移植過程中的第一個困難,是WebSphere不認識Web.xml中的Struts taglib.原文字(適用于Tomcat)如下:
    <!-- Struts的TLDS -->
        
    <taglib>
            
    <taglib-uri>/WEB-INF/tld/app.tld</taglib-uri>
            
    <taglib-location>/WEB-INF/tld/app.tld</taglib-location>
        
    </taglib>

        
    <!-- Struts Tag Library Descriptors -->
        
    <taglib>
            
    <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
            
    <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
        
    </taglib>

        
    <taglib>
            
    <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
            
    <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
        
    </taglib>

        
    <taglib>
            
    <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
            
    <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
        
    </taglib>

    這個問題因為之前有所準備,在網絡上找到了答案,將上述文字包在<jsp-config>節點中即可,修改后(對Tomcat和WebSphere均適用)的文字如下:
    <!-- Struts的TLDS -->
        
    <jsp-config>
            
    <taglib>
                
    <taglib-uri>/WEB-INF/tld/app.tld</taglib-uri>
                
    <taglib-location>/WEB-INF/tld/app.tld</taglib-location>
            
    </taglib>

            
    <!-- Struts Tag Library Descriptors -->
            
    <taglib>
                
    <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
                
    <taglib-location>
                    /WEB-INF/tld/struts-bean.tld
                
    </taglib-location>
            
    </taglib>

            
    <taglib>
                
    <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
                
    <taglib-location>
                    /WEB-INF/tld/struts-html.tld
                
    </taglib-location>
            
    </taglib>

            
    <taglib>
                
    <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
                
    <taglib-location>
                    /WEB-INF/tld/struts-logic.tld
                
    </taglib-location>
            
    </taglib>
        
    </jsp-config>

    如此處理后,首頁顯示出來了,隨即翻頁遇到了問題,在IE中是翻頁出現404錯誤,在FF中好一點,它告訴我WebSphere無法解析struts配置文件struts-config.xml。
    起初我以為是中文問題,刪除struts-config.xml中所有中文注釋問題依舊,接下來在網絡中尋找,還真有和我遇到一樣問題的難友,但沒人提出解決方案,正在撓頭之際,我們的PM忽然說是否JDK不一致,檢查一下,本機用的是1.6,而WebSphere自帶1.5的,將本機也調成1.5后,問題解決! 真是只有咒語能解開咒語。

    再下來,在表單提交時遇到了亂碼問題,這是因為之前聽信網絡意見,將Web.xml中的filter都去掉了,結果自然亂碼。此時感覺網絡傳聞未必可信,于是將filter又重新加上,亂碼沒有了。看來不經親自嘗試而盲從網絡傳聞是要吃虧的。

    再下來,程序要訪問數據庫了,于是在WebSphere6.1中設置了數據源,再在Spring配置文件中進行了設置,如下:
    <bean id="dataSource"
            class
    ="org.springframework.jndi.JndiObjectFactoryBean">
            
    <property name="jndiName"
                value
    ="java:comp/env/jdbc/*******DS">
            
    </property>
    </bean> 


    這樣寫在Tomcat中好用,在WebSphere不好用,正在撓頭之際,PM告我別的項目有同樣的寫法,于是一看,java:comp/env/這部分是不需要的,直接把數據源JNDI名寫在Value中就可以了。
    <bean id="dataSource"
            class
    ="org.springframework.jndi.JndiObjectFactoryBean">
            
    <property name="jndiName"
                value
    ="jdbc/*******DS">
            
    </property>
    </bean> 

    其它數據庫移植的問題就交給了Hibernate。至此問題全部解決。

    事后來看,WebSphere6.1對中文,SSH的支持還是很好的,只是有些特定的地方和傳統的Tomcat中的項目不太一樣,注意一下就好了,未必有想象中的困難。遇到困難時,向有同樣經歷的人請教比自己在網絡上搜尋要快很多。
    posted @ 2011-03-16 22:43 何楊 閱讀(418) | 評論 (2)編輯 收藏

    下載地址:
    http://www.tkk7.com/Files/heyang/RSAWebServiceSample.zip

    posted @ 2011-03-16 00:30 何楊 閱讀(242) | 評論 (0)編輯 收藏

         摘要:   第一部分:頁面中JavaScript的寫法:   function isSoleContractName(contractNameTextBox){                 var&nb...  閱讀全文
    posted @ 2011-03-14 11:35 何楊 閱讀(369) | 評論 (0)編輯 收藏

    第一部分:Web.Xml中ContextLoaderListener的相關配置
    在工程目錄下的\WebContent\WEB-INF\web.xml中,我們可以發現以下配置:

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext-*.xml</param-value>
    </context-param>

     

    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>

    以上第一段XML中,contextConfigLocation參數定義了要載入Spring上下文的配置文件,這里采用了通配符的方式,也可以通過逗號符來分隔多個文件。
    以上第二段XML定義了一個監聽器,它適用于Servlet2.3及其以上版本,這個監聽器會隨著WebApp的啟動而啟動,并加載contextConfigLocation參數中定義好的Spring配置文件。若是在Servlet2.3以下版本中,則需要定義org.springframework.web.context.ContextLoaderServlet來載入配置文件。

    第二部分:Action Bean的配置
    接下來我們需要將Struts2的Action交給Spring管理,以com.heyang.module.contract.action. CheckSoleContractNameAction類為例,它在Spring配置文件\WebContent\WEB-INF\applicationContext-action.xml中的相應配置為:

    <bean id="checkSoleContractNameAction"   class="com.heyang.module.contract.action.CheckSoleContractNameAction" singleton="false">
            
    <property name="contractService">
                
    <ref bean="contractService"/>
            
    </property>
    </bean>

    由上面的XML知道,如果我們取得名為checkSoleContractNameAction的bean,Spring將通過反射調用一個com.heyang.module.contract.action.CheckSoleContractNameAction類的實例,并將一個名為contractService的bean注入進去,當然CheckSoleContractNameAction需要擁有此屬性并具備對應的setter/getter。

    第三部分:在Struts配置文件中將url映射到Spring上下文中的bean
    這種方式是通過指定<action>的class屬性為Spring配置文件中相應bean的id值來做到的,再以CheckSoleContractNameAction為例,它在Struts2配置文件WebContent\WEB-INF\struts-cfg\contract\struts.xml中的相應設置為:
    <action name="checkSoleContractName" class="checkSoleContractNameAction" method="execute"/>
    這樣,當頁面中url有對應用上下文/contract/checkSoleContractName.action?...
    時,com.heyang.module.contract.action.CheckSoleContractNameAction類的execute方法將會來處理用戶的請求。注意,這段url中,應用上下文是WebApp Context,contract是action所在包的名稱空間,checkSoleContractName則是action的name。

    至此,Struts2和Spring的整合配置講述完畢。

    第四部分:Struts2與Spring的整合原理
    在\WebContent\WEB-INF\lib\下存在一個struts2-spring-plugin-2.0.9.jar,這個插件包的作用是通過覆蓋(override)Struts2的ObjectFactory來增強核心框架對象的創建。當Struts2需要根據配置文件創建一個Action的時候,它會用Struts2配置文件中的class屬性去和Spring配置文件中的id屬性進行關聯,如果能找到,則由Spring創建;否則由Struts 2框架自身創建。這個功能是通過插件提供的兩個攔截器實現的,默認情況下框架使用的自動裝配策略是name,也就是說框架會去Spring中尋找與Action屬性名字相同的bean,可選的裝配策略還有:type、auto、constructor等。

    第五部分:Spring與Hibernate的整合
    通常來說,每個負責具體請求的Action都會被注入一個或多個Service bean(參見applicationContext-action.xml),而每個Service Bean都會被注入一個DAO bean(參見applicationContext-dao.xml),而每個dao bean都被被注入一個hibernateTemplate來與數據庫交互(參見applicationContext-dao.xml),而在applicationContext-db.xml中,說明了hibernateTemplate的由來,它最終會找到一個datasource從而找到數據庫。

    這樣,從前臺Struts2的控制器到后臺數據庫,S2SH整個鏈條就被串起來了。

    posted @ 2011-03-13 23:41 何楊 閱讀(612) | 評論 (0)編輯 收藏

    僅列出標題
    共28頁: First 上一頁 10 11 12 13 14 15 16 17 18 下一頁 Last 
    主站蜘蛛池模板: 亚洲六月丁香六月婷婷色伊人| 午夜亚洲国产理论秋霞| 污视频网站免费在线观看| 国产亚洲视频在线播放| 51视频精品全部免费最新| 美景之屋4在线未删减免费| 久久99国产亚洲精品观看| 成年轻人网站色免费看| 中国黄色免费网站| 亚洲狠狠成人综合网| 亚洲中文字幕无码一区 | 蜜臀AV免费一区二区三区| 亚洲a∨国产av综合av下载| 最新国产AV无码专区亚洲 | 久九九精品免费视频| 免费国产a理论片| 亚洲一区在线视频观看| 亚洲伊人久久精品影院| 成人性生活免费视频| 久久久久国产精品免费网站| 黄色a三级三级三级免费看| 亚洲成av人片不卡无码| 国产亚洲日韩在线三区| 国产免费观看青青草原网站| 久久国产乱子伦免费精品| 一级**爱片免费视频| 亚洲熟女乱色一区二区三区| 亚洲国产日韩一区高清在线| 天堂在线免费观看中文版| 99re在线视频免费观看| 国产精品永久免费视频| 亚洲日韩中文字幕无码一区| 亚洲尹人香蕉网在线视颅| 亚洲人成影院在线观看| 好爽好紧好大的免费视频国产| 24小时日本韩国高清免费| 国产免费拔擦拔擦8X高清在线人| 猫咪www免费人成网站| 亚洲一区二区三区写真| 亚洲高清在线播放| 日韩亚洲变态另类中文|