使用JSF创建XML

Kiv*_*iva 6 java xml jsf java-ee

我需要使用我的JSF应用程序将XML发送到浏览器.此XML由应用程序生成.我尝试创建它,但我的JSF应用程序每次都发送HTML.

如何更改内容类型以发送xml?

谢谢你的帮助.

Dam*_*amo 7

有几种方法可以做到这一点.在JSP中执行它有点讨厌.

如前所述,您可以使用Servlet并在其中注入/加载变量.例如,通过访问会话上下文:

MyBean myBean = (MyBean)FacesContext.getCurrentInstance()
                         .getExternalContext().getSessionMap().get("myBean");
Run Code Online (Sandbox Code Playgroud)

或者,您可以从Backing Bean中的方法将其输出到HTTP响应.例如:

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();
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用Facelets,则可以在<f:view>标记中设置响应类型.