我强烈需要覆盖JSF 2.0 Content-Type标题。默认情况下它是JSF,覆盖HTTP标头
Content-Type:application/xhtml+xml; charset=UTF-8
但我需要
Content-Type:text/html; charset=UTF-8
感谢。
我强烈需要覆盖JSF 2.0 Content-Type标题。默认情况下它是JSF,覆盖HTTP标头
Content-Type:application/xhtml+xml; charset=UTF-8
但我需要
Content-Type:text/html; charset=UTF-8
感谢。
如何
<f:view contentType="text/html" />
<!DOCTYPE html>
没有更多。顶部也不要放<?xml?>
声明。这是最小模板:
<!DOCTYPE html>
<html
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Insert your title</title>
</h:head>
<h:body>
<h1>Hello World</h1>
</h:body>
</html>
这是HTML5的文档类型。它与XHTML 1.x标记完全兼容,并增加了更多优势。
删除了我不清楚的答案,并感谢您清除它。 – 2010-09-27 13:58:03
以下方法适用于所有的浏览器:
写的PhaseListener:
public class ContentTypePhaseListener implements PhaseListener {
public PhaseId getPhaseId()
{
return PhaseId.RENDER_RESPONSE;
}
public void afterPhase(PhaseEvent event)
{
}
public void beforePhase(PhaseEvent event)
{
FacesContext facesContext = event.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
response.addHeader("Content-Type", "text/html; charset=UTF-8");
}
}
,并在faces-context.xml中进行注册:
<lifecycle>
<phase-listener>com.mycompnay.listener.ContentTypePhaseListener </phase-listener>
</lifecycle>
该解决方案是必要的工作与旧版本的iPhone和iPad。似乎稍后的浏览器会覆盖默认的Content-Type并进行最佳猜测。但是较老的浏览器都在考虑Content-Type标题并期待标题。很简单的解决方案。 – JeffJak 2012-12-13 22:38:52