在使用Ajax与Action交互时,可以直接在Action里输出,而不是转发给JSP.struts.xml中声明action时,不再需要result标签
package com.struts2;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import com.opensymphony.xwork2.ActionSupport;
public class GetXMLAction extends ActionSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
People people=new People();
people.setId(1);
people.setName("zhangsan");
people.setAddress("beijing");
people.setAge(20);
People people2=new People();
people2.setId(2);
people2.setName("lisi");
people2.setAge(30);
people2.setAddress("Hangzhou");
//下面都是dom4j的使用方法,还是挺简单的
org.dom4j.Document document=DocumentHelper.createDocument();
Element rootElement=document.addElement("persons");
rootElement.addComment("This is comment!!");
Element e=rootElement.addElement("person");
Element idElement=e.addElement("id");
Element nameElement=e.addElement("name");
Element ageElement=e.addElement("age");
Element addressElement=e.addElement("address");
if(name.equals("zhangsan"))
{
idElement.setText(String.valueOf(people.getId()));
nameElement.setText(people.getName());
ageElement.setText(String.valueOf(people.getAge()));
addressElement.setText(people.getAddress());
}else if(name.equals("lisi"))
{
idElement.setText(String.valueOf(people2.getId()));
nameElement.setText(people2.getName());
ageElement.setText(String.valueOf(people2.getAge()));
addressElement.setText(people2.getAddress());
}
//取HttpServletResponse对象,直接输出
HttpServletResponse resp=ServletActionContext.getResponse();
resp.setContentType("text/xml;charset=utf-8");
resp.setHeader("cache-control", "no-cache");
PrintWriter out=resp.getWriter();
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer=new XMLWriter(out, format);
writer.write(document);
out.flush();
out.close();
//返回值可以随意,因为不再判断
return null;
}
}