2011-04-27 8 views
0

GlassFish 3.1에서 실행되는 JSF 2.0이있는 Java EE 6 웹 응용 프로그램이 있습니다.GlassFish에서 JSF 웹 응용 프로그램 용 특정 응답 헤더

이상한 버그가 발생했습니다. Glassfish가 클라이언트에 보내는 응답 헤더의 Mime 유형은 브라우저가 보내는 요청 헤더에서 허용되는 Mime 유형의 순서에 따라 다릅니다. 따라서 일부 경우 (브라우저에 따라 다름) 응답의 MIME 형식이 잘못되어 HTML 페이지가 손상 될 수 있습니다. 하지만 그 일을 설명하는 데 꽤 오래 걸릴 것입니다. 그래서이 문제를 해결하기 위해 우리는 단지 하나만하고 싶습니다 :

"text/html"에 전체 웹 응용 프로그램의 응답 헤더 유형을 강제 적용하십시오. web.xml에

@WebFilter("/BaseFilter") 
public class BaseFilter implements Filter { 
    public BaseFilter() { 
    } 

    public void destroy() { 
    } 

    public void doFilter(ServletRequest request, ServletResponse response, 
          FilterChain chain) throws IOException, ServletException { 
     response.setContentType("text/html;charset=UTF-8"); 
     chain.doFilter(request, response); 
    } 

    public void init(FilterConfig fConfig) throws ServletException { 
    } 
} 

구성 :

그래서 내 질문은
<filter> 
    <filter-name>BaseFilter</filter-name> 
    <filter-class>com.company.web.filter.BaseFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>BaseFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <!-- these patterns should match cached resources --> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

, 더 나은 방법이

현재, 우리는 서블릿 필터는 web.xml의 구성으로 그렇게 특히 ServletFilter를 구현하는 대신 구성함으로써 특정 응답 헤더를 시행 할 수 있습니까?

Glassfish 옵션이 있습니까?

+1

대신 반환되는 값은 무엇입니까? Facelets의 기본값은'text/html'이며, 문자 세트 만 서버/클라이언트 세부 사항에 따라 다를 수 있습니다. 필터 접근법에 관해서는, JS/CSS/이미지 파일을 해당 컨텐츠 유형으로 보내지 않으려 고합니다. 오히려'/ *'의''대신에 JSF 서블릿의''에 매핑하십시오. – BalusC

+0

"Facelets의 기본값은 text/html로, charset은 서버/클라이언트 세부 사항에 따라 다를 수 있습니다."응용 프로그램에서 요청 헤더의 허용되는 Mime 형식 순서에 따라 응답 헤더가 달라집니다. 브라우저 (text/html 또는 해당 렌더링/응용 프로그램/xhtml)에 따라 다르게 보일 수도 있고 그렇지 않을 수도 있습니다. 그래서 우리는 그것을 text/html에 적용하려고합니다. JS/CSS에 관한 힌트를 주셔서 감사 드리며, JSF Servlet 만 필터링하도록 변경하겠습니다. – ifischer

+0

흠,'application/xhtml'을 선호하지만 제대로 렌더링 할 수 없다는 브라우저의 잘못과 비슷하게 들립니다. – BalusC

답변

0

contentType 속성이 기본 템플릿 인 <f:view>으로 지정할 수 있습니다.

<f:view contentType="text/html"> 
관련 문제