我们有一个Java EE 6 Web应用程序,在Glassfish 3.1上运行JSF 2.0。
我们遇到了一个奇怪的错误:Glassfish向客户端发送的响应头的Mime类型取决于浏览器发送的请求头中允许的Mime类型的顺序。所以在某些情况下(取决于浏览器),响应的Mime类型是错误的,导致html页面损坏。 但解释这件事需要很长时间。因此,要解决此问题,我们现在只想做一件事:
强制整个网络应用程序的响应标头类型为“text / html”。
目前,我们使用Web.xml中配置的Servlet过滤器执行此操作:
@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 {
}
}
web.xml中的配置:
<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>
所以我的问题是,是否有更好的方法来强制执行特定的响应标头,特别是通过配置它而不是实现ServletFilter?
有没有Glassfish选项可以做到这一点?
答案 0 :(得分:0)
您可以使用contentType
的{{1}}属性在默认模板中指定它。
<f:view>