我需要在沒有格式化爲html(沒有標題和沒有html標記)的jsf頁面中顯示輸出,而是作爲一個簡單的文本文件。這是可能的JSF 2.0或我需要一個servlet?謝謝Jsf頁面爲普通/無標題的文本html
編輯: 客戶端通過url(帶參數)發出請求,我必須給它一個響應。我知道我可以爲此使用一個servlet,但想知道是否可以使用Bean/JSF。問題是我必須給出不能是html文件,而是文本文件(用於簡單解析)的響應,但不應下載,而是直接在瀏覽器中顯示。我希望我很清楚
我需要在沒有格式化爲html(沒有標題和沒有html標記)的jsf頁面中顯示輸出,而是作爲一個簡單的文本文件。這是可能的JSF 2.0或我需要一個servlet?謝謝Jsf頁面爲普通/無標題的文本html
編輯: 客戶端通過url(帶參數)發出請求,我必須給它一個響應。我知道我可以爲此使用一個servlet,但想知道是否可以使用Bean/JSF。問題是我必須給出不能是html文件,而是文本文件(用於簡單解析)的響應,但不應下載,而是直接在瀏覽器中顯示。我希望我很清楚
我知道我可以使用servlet的這一點,但想知道是否可以使用豆/ JSF來代替。
是的,在JSF中也是很有可能的。整個頁面的facelet可以是這樣的:
<ui:composition
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<f:event type="preRenderView" listener="#{bean.renderText}" />
</ui:composition>
和bean的相關方法可以是這樣的:
public void rendertext() throws IOException {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
Map<String, String> params = ec.getRequestParameterMap();
String foo = params.get("foo"); // Returns request parameter with name "foo".
// ...
ec.setResponseContentType("text/plain");
ec.setResponseCharacterEncoding("UTF-8");
ec.getResponseOutputWriter().write("Some text content");
// ...
fc.responseComplete(); // Important! Prevents JSF from proceeding to render HTML.
}
但是,你則基本上濫用 JSF是錯誤的工具目的。在這種特殊情況下,JSF會增加太多的開銷,而這完全不需要。一個servlet會好很多。您可以使用@WebServlet
註釋進行註冊,而不需要任何XML配置。你也不需要Facelet文件了。
您可以使用Java Servlet以純文本形式輸出響應。
例子:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-Type", "text/plain");
response.setHeader("success", "yes");
PrintWriter writer = response.getWriter();
writer.write("This is plain response\n");
writer.close();
}
如果您的反對票發表評論。 – Makky
如果您使用生成此類內容的組件,JSF將只呈現HTML。 可以產生text/html的內容是這樣的:
<f:view xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core"
contentType="text/plain"
encoding="UTF-8">
<ui:composition>
Your plain text goes here.
You can use expressions as usual: #{myBean.value}.
</ui:composition>
</f:view>
僅僅是純文本將被渲染。使用f:view組件屬性設置響應頭。
刪除.xhtml文件中的所有標籤,它將打印純文本。 – Makky
我不必手動操作。客戶端發出請求,我必須給它一個不應該是html頁面而是文本文件的響應。這個文本文件將包含由支持bean java完成的處理。 –
據我瞭解,我理解html內容並不需要。你需要發送一個文本文件到客戶端下載一個文本文件? – erencan