Java 将Jsf页面转换为纯文本/无标题html

Java 将Jsf页面转换为纯文本/无标题html,java,jsf,servlets,jsf-2,primefaces,Java,Jsf,Servlets,Jsf 2,Primefaces,我需要在jsf页面中显示输出,该页面的格式不是html(没有标题和html标记),而是简单的文本文件。这在JSF2.0中是可能的,或者我需要一个servlet?谢谢 编辑: 客户端通过url(带参数)发出请求,我必须给它一个响应。我知道我可以为此使用servlet,但我想知道是否可以使用Bean/JSF。问题是,我必须给出的响应不能是html文件,而是文本文件(用于简单解析),但不应下载,而是直接显示在浏览器中。我希望我说得很清楚您可以使用Javaservlet以纯文本形式输出响应 例如: pr

我需要在jsf页面中显示输出,该页面的格式不是html(没有标题和html标记),而是简单的文本文件。这在JSF2.0中是可能的,或者我需要一个servlet?谢谢

编辑:
客户端通过url(带参数)发出请求,我必须给它一个响应。我知道我可以为此使用servlet,但我想知道是否可以使用Bean/JSF。问题是,我必须给出的响应不能是html文件,而是文本文件(用于简单解析),但不应下载,而是直接显示在浏览器中。我希望我说得很清楚

您可以使用Javaservlet以纯文本形式输出响应

例如:

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();
}

您可以使用Javaservlet以纯文本形式输出响应

例如:

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();
}
我知道我可以为此使用servlet,但我想知道是否可以使用Bean/JSF

是的,使用JSF也是很有可能的。整个Facelet页面可以如下所示:

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.
}

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.
}
public void rendertext()引发IOException{
FacesContext fc=FacesContext.getCurrentInstance();
ExternalContext ec=fc.getExternalContext();
Map params=ec.getRequestParameterMap();
字符串foo=params.get(“foo”);//返回名为“foo”的请求参数。
// ...
ec.setResponseContentType(“文本/普通”);
ec.setResponseCharacterEncoding(“UTF-8”);
ec.getResponseOutputWriter().write(“一些文本内容”);
// ...
fc.responseComplete();//重要!阻止JSF继续呈现HTML。
}
然而,实际上,您滥用了JSF作为错误的工具。JSF在这种特定情况下增加了太多的开销,您根本不需要。servlet就更好了。您可以使用
@WebServlet
注释注册它,而无需任何XML配置。您也不再需要Facelet文件

我知道我可以为此使用servlet,但我想知道是否可以使用Bean/JSF

是的,使用JSF也是很有可能的。整个Facelet页面可以如下所示:

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.
}

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.
}
public void rendertext()引发IOException{
FacesContext fc=FacesContext.getCurrentInstance();
ExternalContext ec=fc.getExternalContext();
Map params=ec.getRequestParameterMap();
字符串foo=params.get(“foo”);//返回名为“foo”的请求参数。
// ...
ec.setResponseContentType(“文本/普通”);
ec.setResponseCharacterEncoding(“UTF-8”);
ec.getResponseOutputWriter().write(“一些文本内容”);
// ...
fc.responseComplete();//重要!阻止JSF继续呈现HTML。
}

然而,实际上,您滥用了JSF作为错误的工具。JSF在这种特定情况下增加了太多的开销,您根本不需要。servlet就更好了。您可以使用
@WebServlet
注释注册它,而无需任何XML配置。您也不再需要Facelet文件

JSF仅在使用生成此类内容的组件时呈现HTML。 您可以生成如下所示的文本/html内容:

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.
}

你的纯文本在这里。
您可以像往常一样使用表达式:#{myBean.value}。

只会呈现纯文本。使用f:view组件属性可以设置响应头。

JSF仅在使用生成此类内容的组件时呈现HTML。 您可以生成如下所示的文本/html内容:

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.
}

你的纯文本在这里。
您可以像往常一样使用表达式:#{myBean.value}。

只会呈现纯文本。使用f:view组件属性设置响应标题。

从.xhtml文件中删除所有标记,它将打印纯文本。我不必手动执行。客户端发出请求,我必须给它一个响应,它不应该是html页面,而是文本文件。这个文本文件将包含由java支持bean完成的处理。据我所知,html内容是不需要的。您需要向客户端发送一个文本文件,就像下载一个文本文件一样?您能用一些例子解释一下吗?您的问题不是自我解释您在这里实现了什么?最好使用Servlet。从.xhtml文件中删除所有标记,它将打印纯文本。我不必手动执行。客户端发出请求,我必须给它一个响应,它不应该是html页面,而是文本文件。这个文本文件将包含由java支持bean完成的处理。据我所知,html内容是不需要的。您需要向客户端发送一个文本文件,就像下载一个文本文件一样?您能用一些例子解释一下吗?您的问题不是自我解释您在这里实现了什么?最好使用Servlet。