2011-06-21 41 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。 –