2012-03-14 18 views
1

こんにちは私は、select box onchangeイベントでstorenameのonselectイベントを使って1つの選択ボックスに製品名を読み込むために、プロジェクトでAjaxを使用しています。ここでは、JavaアクションクラスからJSPにリストを取得するためにAjaxを使用しました。 JspとActionクラスの私のコードは以下のようになります。XML変換の問題を解決するには?

<s:label value="Store Name : *" />                   
<s:select name="storeName" list="storeList" onchange="loadProduct(this.value)" listKey="storeId" listValue="storeName" headerKey="-1" headerValue="Select the Store" /> 

<s:label value="Product Name : *" /> 
<s:select name="productName" list="productList" listKey="productId" listValue="productName" /> 


function loadProduct(id){ 
var URL = "AjaxPopMyCycle.action?storeName="+id; 
ajaxEditFunctionCall(URL); 

           } 

     function ajaxEditFunctionCall(URL){ 
       try{ 
        xmlHttp=new XMLHttpRequest(); 
       }catch (e){ 
       try{ 
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
       }catch (e){ 
        try{ 
         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        }catch (e){ 
         alert("Your browser does not support AJAX!"); 
         return false; 
        } 
       } 
      } 
      xmlHttp.onreadystatechange=function(){ 
       if(xmlHttp.readyState==4){ 
        if (xmlHttp.status == 200) { 
         if(xmlHttp.responseXML != null){      
           showMessage(xmlHttp.responseXML); 
         } 
        } 
       } 
      } 
      xmlHttp.open("GET", URL, true); 
      xmlHttp.send(URL); 
     } 
     function showMessage(errorDisplayXML){ 
     var checklist=document.Add.productName; 
      checklist.options.length=0; 
      if(xmlHttp.readyState==4){ 

      if(errorDisplayXML.getElementsByTagName("rootElement")[0]!=null){ 
       var rootElement = errorDisplayXML.getElementsByTagName("rootElement")[0]; 
       var location = rootElement.getElementsByTagName("Message"); 
       var locArr = location[0]; 
        var locArr = " "; 
        var tempArr; 
        var tempArr1; 
        for(var i=0; i<location.length; i++){ 
         tempArr = ""; 
         tempArr1 = ""; 
         locArr = location[i]; 
         tempArr = locArr.getElementsByTagName("productId")[0].firstChild.nodeValue; 
         tempArr1 = locArr.getElementsByTagName("productnName")[0].firstChild.nodeValue; 
         checklist.options[i]= new Option(tempArr1,tempArr);       
        }  
       }else{ 
        alert("errorDisplayXML Contains NULL"); 
       } 
      } 
      } 

結果を取得してXMLにロードするためのActionクラスのコードは次のとおりです。

detailedListには、データベースからのストアに関連する製品のリストが含まれています。

私はアクションクラスに以下のパッケージをインポートしました。

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Text;

import com.sun.org.apache.xml.internal.serialize.OutputFormat;

import com.sun.org.apache.xml.internal.serialize.XMLSerializer;

最後の3週間は正常に機能します。

コンパイル中に次のエラーメッセージが表示されることはありません。

C:¥Users¥Desktop¥Updated¥Project¥src¥main¥java¥com¥action \ AjaxAction.java:[199,5] com.sun.org.apache.xml.internal.serialize.XMLSerializer は、Sun独自のAPIであると

C将来のリリースでは削除されることがあります。AjaxAction.java \デスクトップ\ \ Users \ユーザー更新\プロジェクト\のSRCメイン\のJava \ \ COM \アクション :[199,32] COM。 sun.org.apache.xml.internal.serialize.XMLSerialize rは日、独自のAPIであると

私のプロジェクトは、フロントエンドとバックエンドとしてMySQLサーバとしてStruts2の、JSP、Hibernate3のを使用して、将来のリリースで除去することができます。私はこの問題を解決することは考えていません。

誰でもこの問題を解決するのを手伝ってください。前もって感謝します!!!。

+0

ちょうど側ではないあなたはより軽量かつよりであるJSON形式を訴えない理由flexible.S2は、DIN JSONのサポートとへの容易なを構築しています代わりにXStreamを使用してフレキシブルで使いやすい –

+0

ありがとうUmeshAwasthi。 JSON形式を使用するためにURLを送信できますか?私はこの技術について全く知らない。 – shiva

+0

ここにあなたのリンクがあります。あなたのクラスパスにプラグインが必要です。あなたは行く準備ができています。 https://cwiki.apache.org/confluence/display/WW/JSON%20Plugin –

答えて

0

org.apache.xml.serialize.XMLSerializerを使用すると、エラーを回避することもできます。 xercesImpl-2.7.1.jarからこのクラスをインポートして、このようなparseToString()に使用します。

import org.apache.xml.serialize.OutputFormat; 
import org.apache.xml.serialize.XMLSerializer; 

public String parseToString(Element node) throws Exception { 
    OutputFormat format = new OutputFormat(); 
    java.io.Writer stringOut = new StringWriter();  
    XMLSerializer serial = new XMLSerializer(stringOut,format);      
    serial.serialize(node); 
    return stringOut.toString(); 
} 
関連する問題