在基于JSF的Web应用程序中编写纯HTML

时间:2015-02-16 09:19:51

标签: jsf html-rendering

我在JSF应用程序中有这个用例。

在JSF Web应用程序中,我有一个调用外部服务的按钮,该服务返回完整的HTML响应,然后如何向用户浏览器显示HTML响应?

事件的顺序是这样的。

  1. 在用户浏览器中,显示我的应用程序。用户可以点击一个按钮。
  2. 单击该按钮将调用外部服务。外部服务将返回有关某些HTML标记的信息。 HTML包含head / body和javascript。目前,该服务可以通过REST服务或普通数据库调用来实现
  3. 如何在用户浏览器中显示该HTML标记?
  4. 是否可以在JSF Web应用程序中编写非JSF输出?

    添加,我认为我的问题是如何在我的支持bean中编写HTML并将其写回用户浏览器。

1 个答案:

答案 0 :(得分:2)

直接将其写入HTTP response body,然后指示JSF response is manually completed。该原则与How to provide a file download from a JSF backing bean?没有太大区别,只是您需要将内容处置设置为inline(无论如何已经是默认值)。

public void writeHtmlResponse() throws IOException {
    FacesContext fc = FacesContext.getCurrentInstance();
    ExternalContext ec = fc.getExternalContext();

    ec.setResponseContentType("text/html;charset=UTF-8");
    ec.setResponseCharacterEncoding("UTF-8");
    ec.getResponseOutputStream().write(html.getBytes("UTF-8"));

    fc.responseComplete(); // Important! Otherwise JSF will attempt to render the response which obviously will fail since it's already written with a file and closed.
}