我在JSF应用程序中有这个用例。
在JSF Web应用程序中,我有一个调用外部服务的按钮,该服务返回完整的HTML响应,然后如何向用户浏览器显示HTML响应?
事件的顺序是这样的。
是否可以在JSF Web应用程序中编写非JSF输出?
添加,我认为我的问题是如何在我的支持bean中编写HTML并将其写回用户浏览器。
答案 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.
}