Struts2的ACTION中我生成了XML各式,并通过 out.write传到页面HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
response.reset();
response.setContentType("text/xml;charset=utf-8"); PrintWriter out = response.getWriter();
String strHtmlText = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
strHtmlText +="<site_xml>\r\n";
strHtmlText +="<data>\r\n";
strHtmlText +="<row>\r\n";
strHtmlText +=" <col0>26</col0>\r\n";
strHtmlText +=" <col1>192.168.1.26</col1>\r\n";
strHtmlText +=" <col2>对象类型26</col2>\r\n";
strHtmlText +="</row>\r\n";
strHtmlText +="<row>\r\n";
strHtmlText +=" <col0>27</col0>\r\n";
strHtmlText +=" <col1>192.168.1.27</col1>\r\n";
strHtmlText +=" <col2>对象类型27</col2>\r\n";
strHtmlText +="</row>\r\n";
strHtmlText +="<row>\r\n";
strHtmlText +=" <col0>28</col0>\r\n";
strHtmlText +=" <col1>192.168.1.28</col1>\r\n";
strHtmlText +=" <col2>对象类型28</col2>\r\n";
strHtmlText +="</row>\r\n";
strHtmlText +="</data>\r\n";
strHtmlText +="</site_xml>\r\n"; out.write(strHtmlText);
前台JSP页面<script language="JavaScript" type="text/javascript">
function doInit(){
var reqXML=createXMLHttp();
if(reqXML){
reqXML.onreadystatechange=function(){
if(reqXML.readyState==4){
if(reqXML.status==0 || reqXML.status==200){
var resultM=reqXML.responseXML;
alert(resultM);
var site_xml = resultM.getElementsByTagName("site_xml").length;
alert(site_xml);//此处得出的结果是零,应该是1的
}
}
};
reqXML.open("post", "myAction.action", false);
reqXML.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
reqXML.send();
}
}
</script>为什么我生成的XML各式的字符串在前台打不出来呢?
reqXML.responseText打出的结果不是XML各式字符串,而是将我的JSP页面所有内容都打出。
reqXML.responseXML;打出的对象结果虽然不为空,但通过resultM.getElementsByTagName("site_xml").length;解析的时候值为零,应该为1的啊
response.reset();
response.setContentType("text/xml;charset=utf-8"); PrintWriter out = response.getWriter();
String strHtmlText = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
strHtmlText +="<site_xml>\r\n";
strHtmlText +="<data>\r\n";
strHtmlText +="<row>\r\n";
strHtmlText +=" <col0>26</col0>\r\n";
strHtmlText +=" <col1>192.168.1.26</col1>\r\n";
strHtmlText +=" <col2>对象类型26</col2>\r\n";
strHtmlText +="</row>\r\n";
strHtmlText +="<row>\r\n";
strHtmlText +=" <col0>27</col0>\r\n";
strHtmlText +=" <col1>192.168.1.27</col1>\r\n";
strHtmlText +=" <col2>对象类型27</col2>\r\n";
strHtmlText +="</row>\r\n";
strHtmlText +="<row>\r\n";
strHtmlText +=" <col0>28</col0>\r\n";
strHtmlText +=" <col1>192.168.1.28</col1>\r\n";
strHtmlText +=" <col2>对象类型28</col2>\r\n";
strHtmlText +="</row>\r\n";
strHtmlText +="</data>\r\n";
strHtmlText +="</site_xml>\r\n"; out.write(strHtmlText);
前台JSP页面<script language="JavaScript" type="text/javascript">
function doInit(){
var reqXML=createXMLHttp();
if(reqXML){
reqXML.onreadystatechange=function(){
if(reqXML.readyState==4){
if(reqXML.status==0 || reqXML.status==200){
var resultM=reqXML.responseXML;
alert(resultM);
var site_xml = resultM.getElementsByTagName("site_xml").length;
alert(site_xml);//此处得出的结果是零,应该是1的
}
}
};
reqXML.open("post", "myAction.action", false);
reqXML.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
reqXML.send();
}
}
</script>为什么我生成的XML各式的字符串在前台打不出来呢?
reqXML.responseText打出的结果不是XML各式字符串,而是将我的JSP页面所有内容都打出。
reqXML.responseXML;打出的对象结果虽然不为空,但通过resultM.getElementsByTagName("site_xml").length;解析的时候值为零,应该为1的啊
在struts2中我已经定义了全局变量strHtmlText,并且有set,get方法。但我如何将获取到的值赋给js文件中的变量呢?我将var resultM=reqXML.responseXML; 更改为var resultM=<%=(String)request.getAttribute("strHtmlText")%>但这么做的是错误的,而且
request.getAttribute("strHtmlText")%>得出的值日时除去XML格式的值,即28 6 6 5 5 6 26 192.168.1.26 对象类型26 27 192.168.1.27 对象类型27 28 192.168.1.28 对象类型28
把这个改成out.println(strHtmlText);试试看
试试!如果你要用<%=(String)request.getAttribute("strHtmlText")%>
那在action中就需要显示的写出ServletActionContext.getRequest().setAttribute("strHtmlText",strHtmlText);
在这之后有个out.close();即可。谢谢大家了,呵呵。给分。