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

          真正的快樂來源于創造

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

          公告


          常用鏈接

          留言簿(3)

          最新隨筆

          積分與排名

          • 積分 - 394266
          • 排名 - 145

          最新評論

          閱讀排行榜

           

          第一部分:頁面中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"){

                                                                                          
          // 返回正確信息

                                                                                          

                                                                                          
          // 找到所有節點放入數組

                                                                                          
          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){

                                                                                                                          
          // 驗證結果有重復的,彈出對話框提示用戶

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

                                                                                                                          alert(text);

                                                                                                                          contractNameTextBox.focus();

                                                                                                          }


                                                                                          }


                                                                                          
          else{

                                                                                                          
          return;

                                                                                          }


                                                                          }


                                                                          
          else{

                                                                                          
          // 返回錯誤信息

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

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

                                                                          }


                                             }
          ,     

                                             onFailure: 
          function()

                                                             msger.showErrorMsg(
          "無法取得服務器的響應");

                                             }
             

                                          }


                          ); 

          }


          第二部分:

          Struts2中對應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轉碼的類:

          import java.io.UnsupportedEncodingException;

          import java.net.URLDecoder;

          import java.net.URLEncoder;

           

           

          /**

           * UTF8轉碼器

           * 
          @author heyang

           *

           
          */


          public class UTF8Coder{

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

           

                          
          /**

                           * 對文字進行UTF8轉碼

                           * 
          @param str

                           * 
          @return

                           
          */


                          
          public static String encode(String str){

                                          
          try {

                                                          
          return URLEncoder.encode(str, UTF_8);

                                          }
           catch (UnsupportedEncodingException e) {

                                                          
          return null;

                                          }


                          }


                          

                          
          /**

                           * 將轉碼后的文字還原

                           * 
          @param str

                           * 
          @return

                           
          */


                          
          public static String decode(String str){

                                          
          try {

                                                          
          return URLDecoder.decode(str, UTF_8);

                                          }
           catch (UnsupportedEncodingException e) {

                                                          
          return null;

                                          }


                          }


          }


           

          注意點:

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 屏山县| 扎兰屯市| 长白| 平顶山市| 德保县| 天气| 青川县| 银川市| 兴山县| 大新县| 宝鸡市| 岗巴县| 达尔| 杂多县| 日喀则市| 清涧县| 金沙县| 乐业县| 莆田市| 双鸭山市| 肇州县| 溧阳市| 房产| 梧州市| 东辽县| 新竹县| 大关县| 公主岭市| 准格尔旗| 禄丰县| 阿拉善右旗| 健康| 井冈山市| 板桥市| 安泽县| 东莞市| 海原县| 中卫市| 松桃| 阿勒泰市| 新乡市|