2013-07-03 4 views
0

html (헤더없이 html 태그 제외) 형식이 아닌 jsf 페이지에 출력을 표시해야하지만 간단한 텍스트 파일로 출력해야합니다. 이것은 JSF 2.0에서 가능하거나 필연적으로 서블릿이 필요합니까? 감사합니다Jsf 페이지를 헤더없이 html로 작성

편집 : 클라이언트가 URL (매개 변수 포함)을 통해 요청을하고 응답을 보내야합니다. 서블릿을 사용할 수 있지만 Bean/JSF를 대신 사용할 수 있는지 알고 싶었습니다. 문제는 HTML 파일이 아니라 텍스트 파일 (간단한 구문 분석) 일 수있는 응답을 제공해야한다는 것입니다. 그러나 다운로드해서는 안되지만 브라우저에 직접 표시해야합니다. 내가 분명했으면 좋겠어.

+0

.xhtml 파일에서 모든 태그를 제거하면 일반 텍스트가 인쇄됩니다. – Makky

+0

수동으로하지 않아도됩니다. 클라이언트는 요청을하고 HTML 페이지가 아닌 텍스트 파일이어야하는 응답을 제공해야합니다. 이 텍스트 파일에는 i 업 bean java가 수행 한 처리가 들어 있습니다. –

+0

까지 나는 html 콘텐츠가 필요 없다는 것을 이해합니다. 텍스트 파일을 다운로드하는 것과 같이 클라이언트에 텍스트 파일을 보내야합니까? – erencan

답변

2

나는 이것에 대한 서블릿을 사용하지만 대신 콩/JSF를 사용할 수 있다면 알고 싶어 수 있다는 것을 알고.

예, JSF에서도 가능합니다. 다음과 같이 할 수

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

그리고 콩의 관련 방법 : 전체 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. 
} 

을하지만, 당신은 다음있어 본질적으로 에 대한 JSF와 같은 잘못된 도구를 남용 목적. JSF는이 특별한 경우에 너무 많은 오버 헤드를 추가하여 전혀 필요하지 않습니다. 그러면 서블릿이 훨씬 좋습니다. @WebServlet 주석을 사용하여 XML 구성 없이도 등록 할 수 있습니다. 더 이상 Facelet 파일이 필요 없습니다.

1

자바 서블릿을 사용하여 일반 텍스트로 응답을 출력 할 수 있습니다.

예 :

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

다운 투표하면 의견을 남겨주세요. – Makky

0

JSF는 이러한 내용을 생성하는 구성 요소를 사용하는 경우에만 HTML을 렌더링합니다. 당신은이 같은 텍스트/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 구성 요소 속성을 사용하여 응답 헤더를 설정합니다.