如何使用xmlhttprequest获取struts2 HttpServletResponse

时间:2011-06-21 05:02:43

标签: jsp struts2 xmlhttprequest activexobject

我的struts.xml部分

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

在Welcome.jsp的页面加载上我调用一个函数getXml(),该函数应该接收xml作为响应,但我得到success.jsp内容

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);
}

1 个答案:

答案 0 :(得分:2)

在struts.xml中你有:

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

这与:

相同
<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结果类型。

修改:您也可以使用流结果。