这样写报错(运行时)得到的是html
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext exContext = facesContext.getExternalContext();
HttpServletResponse response = (HttpServletResponse) exContext.getResponse();
response.setContentType("text/xml;charset=UTF-8");
OutputStream out = response.getOutputStream();
logger.info(returnString);
out.write(returnString.getBytes());
logger.info(returnString);
out.flush();
out.close();
这样写不报错得到的还是html
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext exContext = facesContext.getExternalContext();
HttpServletResponse response = (HttpServletResponse) exContext.getResponse();
response.setContentType("text/xml;charset=UTF-8");
PrintWriter out = response.getWriter();
logger.info(returnString);
out.write(returnString.getBytes());
logger.info(returnString);
out.flush();
out.close();
==============================
找不到原因:
最后找到了这篇文章:http://stackoverflow.com/questions/1327491/create-xml-with-jsf
try {
String xml = "<person>damian</person>";
FacesContext ctx = FacesContext.getCurrentInstance();
final HttpServletResponse resp = (HttpServletResponse)ctx.getExternalContext().getResponse();
resp.setContentType("text/xml");
resp.setContentLength(xml.length());
resp.getOutputStream().write(xml.getBytes());
resp.getOutputStream().flush();
resp.getOutputStream().close();
ctx.responseComplete();
} catch (IOException e) {
e.printStackTrace();
}
这样写就OK了!
这个东东 干了个啥呢? ctx.responseComplete();