2011-06-21 136 views
1

我struts.xml的一部分如何使用XMLHTTP請求

<action name="viewall" class="com.abc.csm.actions.GetAllConfiguration"> 
     <result name="success">/success.jsp</result> 
    </action> 

上的Welcome.jsp中頁面載入我調用一個函數getXml()應接收XML作爲迴應,而是我得到success.jsp內容得到struts2的HttpServletReponse

function getXml() 
{ 
var url_action="/csm/viewall.action"; 
var client; 
var dataString; 

if (window.XMLHttpRequest){ 
    client=new XMLHttpRequest(); 
} else {      
    client=new ActiveXObject("Microsoft.XMLHTTP"); 
} 

client.onreadystatechange=function(){ 

    if(client.readyState==4&&client.status==200) 
    { 
     alert(client.responseText); /* here i want to get the actual response i.e., my xml. I am also using fiddler to monitor. */ 

    } 
}; 

dataString="projectid=1-105101"; 
client.open("POST",url_action,true); 
client.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

client.send(dataString); 
} 

回答

2

在struts.xml中你有:

<result name="success">/success.jsp</result> 

這個我s相同:

<result type="dispatcher" name="success">/success.jsp</result> 

調度程序結果類型是默認值,它表示呈現jsp。這就是發生了什麼,你得到了jsp的結果而不是xml。

以下是內置結果類型的列表:http://struts.apache.org/2.0.6/docs/result-types.html xslt結果類型可能會讓您感興趣。如果您不介意使用JSON工作,那麼將struts2-json-plugin添加到您的類路徑中會爲您提供非常容易使用的json結果類型。

編輯:您也可以使用流結果。

+0

我試過'/success.jsp'但它不起作用。並沒有xml類型 – abi1964

+0

我沒有xslt類型的經驗。對於使用JSON的Ajax,使用起來相當容易。當您需要正式的跨業務格式時,xml的好處就顯現出來了。我使用了流結果類型(用於pdf),並可能會在xslt之前嘗試。 – Quaternion

+1

您也可以使用調度程序結果類型並將其映射到呈現XML而非HTML的JSP。 –