Necesito sobrescribir JSF 2.0 Content-Type encabezado. Por defecto esJSF, sobrescribir encabezados HTTP
Content-Type:application/xhtml+xml; charset=UTF-8
pero necesito
Content-Type:text/html; charset=UTF-8
Gracias.
Necesito sobrescribir JSF 2.0 Content-Type encabezado. Por defecto esJSF, sobrescribir encabezados HTTP
Content-Type:application/xhtml+xml; charset=UTF-8
pero necesito
Content-Type:text/html; charset=UTF-8
Gracias.
¿Qué tal
<f:view contentType="text/html" />
Utilice el right doctype.
<!DOCTYPE html>
Nada más. Además, no coloque la declaración <?xml?>
en la parte superior. Aquí hay una plantilla mínima:
<!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>
Es el doctype HTML5. Es totalmente compatible con el marcado XHTML 1.x y agrega más ventajas.
eliminé mi respuesta poco clara, y gracias por despejarla. –
El siguiente enfoque funciona en todos los navegadores:
Escribe un 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");
}
}
y registrarlo en caras-context.xml:
<lifecycle>
<phase-listener>com.mycompnay.listener.ContentTypePhaseListener </phase-listener>
</lifecycle>
¿No es un 'PhaseListener' una" solución "demasiado complicada para este simple problema? Independientemente de esto, ¿por qué no solo un 'Filtro' ya que no tendrá ningún interés en' FacesContext'? – BalusC
1. funciona en todos los navegadores 2. Lo puede necesitar en el futuro – Dejell
1. No estoy seguro de cómo hacer el trabajo dentro de un 'PhaseListener' en lugar de un' Filter' o solo directamente en la vista es detectado por el navegador web. ¿Puedes elaborar? 2. Tal vez. – BalusC
Esta solución es necesaria para el trabajo con versiones anteriores de iPhone y iPad. Parece que los navegadores posteriores están deshaciéndose del tipo de contenido predeterminado y haciendo su mejor suposición. Pero el navegador anterior respetaba el encabezado Content-Type y el encabezado de espera. Gran solución que fue simple. – JeffJak