當(dāng)柳上原的風(fēng)吹向天際的時候...

          真正的快樂來源于創(chuàng)造

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
           

          第一部分:頁面中JavaScript的寫法:

           

          function isSoleContractName(contractNameTextBox){

                          
          var contractName=contractNameTextBox.value;

                          
          var sameNameContractId="NONE";

           

                          
          var url=encodeURI('<%=request.getContextPath()%>/contract/checkSoleContractName.action?contractName='+contractName);

                          url
          =encodeURI(url);// 有中文進行兩次編碼

           

                          
          new Ajax.Request(url,{     

                                             method:'post',     

                                             onSuccess: 
          function(ajaxObj){                            

                                                                          
          var status=ajaxObj.responseXML.getElementsByTagName("status")[0].firstChild.data;

                                                                                                                                          

                                                                          
          if(status=="ok"){

                                                                                          
          // 返回正確信息

                                                                                          

                                                                                          
          // 找到所有節(jié)點放入數(shù)組

                                                                                          
          var id=ajaxObj.responseXML.getElementsByTagName("contractId")[0].firstChild.data;

                                                                                          sameNameContractId
          =id;

                                                                                          

                                                                                          
          if(sameNameContractId != "NONE"){

                                                                                                          
          // 得到本身的ID

                                                                                                          
          var contractId = document.getElementById("instance.contractId").value;

                                                                                                          

                                                                                                          
          if(contractId!=sameNameContractId){

                                                                                                                          
          // 驗證結(jié)果有重復(fù)的,彈出對話框提示用戶

                                                                                                                          
          var text="您輸入的合同名稱與ID為"+sameNameContractId+"的合同名稱重復(fù),請更改一下。";

                                                                                                                          alert(text);

                                                                                                                          contractNameTextBox.focus();

                                                                                                          }


                                                                                          }


                                                                                          
          else{

                                                                                                          
          return;

                                                                                          }


                                                                          }


                                                                          
          else{

                                                                                          
          // 返回錯誤信息

                                                                                          
          var text=ajaxObj.responseXML.getElementsByTagName("text")[0].firstChild.data;

                                                                                          msger.showWarningMsg(
          "出現(xiàn)錯誤"+text);

                                                                          }


                                             }
          ,     

                                             onFailure: 
          function()

                                                             msger.showErrorMsg(
          "無法取得服務(wù)器的響應(yīng)");

                                             }
             

                                          }


                          ); 

          }


          第二部分:

          Struts2中對應(yīng)Action的寫法:

          public class CheckSoleContractNameAction extends AbstractAction {

                          
          private static final long serialVersionUID = 9000299191145305626L;

                          

                          
          private TbContractService contractService;

                          

                          
          private String contractName;

                          

                          
          public String execute() throws IOException{

                                          HttpServletResponse response 
          = ServletActionContext.getResponse();

                                          response.setContentType(
          "text/xml;charset=UTF-8");

                                          response.setHeader(
          "Cache-Control","no-cache");

                                          HttpServletRequest request
          =ServletActionContext.getRequest();

                                          request.setCharacterEncoding(
          "UTF-8");  

                                          

                                          contractName
          =UTF8Coder.decode(contractName);

                                          System.out.println(
          "contractName 1="+contractName);

                                          

                                          
          // 得到同名合同的ID

                                          String sameNameContractId
          =getSameNameComtractId(contractName);

                                          

                                          
          if(sameNameContractId==null){

                                                          StringBuilder sb
          =new StringBuilder();

                                                          sb.append(
          "<response>");

                                                          sb.append(
          "<status>ok</status>");

                                                          sb.append(
          "<contractId>NONE</contractId>");

                                                          sb.append(
          "</response>");

                                                          

                                                          response.getWriter().write(sb.toString());

                                                          response.getWriter().close();

                                          }


                                          
          else{

                                                          StringBuilder sb
          =new StringBuilder();

                                                          sb.append(
          "<response>");

                                                          sb.append(
          "<status>ok</status>");

                                                          sb.append(
          "<contractId>"+sameNameContractId+"</contractId>");

                                                          sb.append(
          "</response>");

                                                          

                                                          response.getWriter().write(sb.toString());

                                                          response.getWriter().close();

                                          }


                                          

                                          
          return null;

                          }


          }


           

          第三部分:涉及后臺UTF-8轉(zhuǎn)碼的類:

          import java.io.UnsupportedEncodingException;

          import java.net.URLDecoder;

          import java.net.URLEncoder;

           

           

          /**

           * UTF8轉(zhuǎn)碼器

           * 
          @author heyang

           *

           
          */


          public class UTF8Coder{

                          
          private static final String UTF_8 = "utf-8";// 編碼形式

           

                          
          /**

                           * 對文字進行UTF8轉(zhuǎn)碼

                           * 
          @param str

                           * 
          @return

                           
          */


                          
          public static String encode(String str){

                                          
          try {

                                                          
          return URLEncoder.encode(str, UTF_8);

                                          }
           catch (UnsupportedEncodingException e) {

                                                          
          return null;

                                          }


                          }


                          

                          
          /**

                           * 將轉(zhuǎn)碼后的文字還原

                           * 
          @param str

                           * 
          @return

                           
          */


                          
          public static String decode(String str){

                                          
          try {

                                                          
          return URLDecoder.decode(str, UTF_8);

                                          }
           catch (UnsupportedEncodingException e) {

                                                          
          return null;

                                          }


                          }


          }


           

          注意點:

          1.       如果請求參數(shù)有中文,切記用JavaScript函數(shù)encodeURI進行兩次編碼,在服務(wù)器端用URLDecoder類解碼,此方式萬無一失。

          在控制臺打印不是可以完全信任的,比如我的英文系統(tǒng)中Eclipse控制臺中中文打印出來就是問號,但是實際上是正常的中文。因此,不要以控制臺輸入正確的文字才認為轉(zhuǎn)碼成功。
          posted on 2011-03-14 11:35 何楊 閱讀(372) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 临澧县| 三门峡市| 乡城县| 威远县| 武汉市| 惠东县| 本溪市| 安平县| 谢通门县| 梅州市| 双辽市| 西吉县| 汾阳市| 临武县| 海原县| 南涧| 庆元县| 勐海县| 高雄县| 龙泉市| 辽宁省| 阳信县| 镇巴县| 万盛区| 长武县| 布拖县| 福州市| 商都县| 浪卡子县| 田东县| 丹东市| 九寨沟县| 石门县| 密云县| 武山县| 楚雄市| 峨边| 新兴县| 克山县| 阳山县| 浙江省|