Je dois fortement remplacer JSF 2.0 En-tête de type de contenu. Par défaut, il estJSF, remplacer les en-têtes HTTP
Content-Type:application/xhtml+xml; charset=UTF-8
Mais je dois
Content-Type:text/html; charset=UTF-8
Merci.
Je dois fortement remplacer JSF 2.0 En-tête de type de contenu. Par défaut, il estJSF, remplacer les en-têtes HTTP
Content-Type:application/xhtml+xml; charset=UTF-8
Mais je dois
Content-Type:text/html; charset=UTF-8
Merci.
Que diriez-vous
<f:view contentType="text/html" />
Utilisez le right doctype.
<!DOCTYPE html>
Rien de plus. Ne mettez pas non plus la déclaration <?xml?>
en haut. Voici un template minimum:
<!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>
C'est le doctype HTML5. Il est entièrement compatible avec le balisage XHTML 1.x et ajoute plus d'avantages.
supprimé ma réponse peu claire, et merci de l'effacer. –
L'approche suivante fonctionne dans tous les navigateurs:
Ecrire 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");
}
}
et l'enregistrer dans les faces-context.xml:
<lifecycle>
<phase-listener>com.mycompnay.listener.ContentTypePhaseListener </phase-listener>
</lifecycle>
Le 'PhaseListener' n'est-il pas une" solution "trop compliquée pour ce problème simple? Indépendamment de cela, pourquoi ne pas juste un 'Filter' puisque vous n'aurez aucun intérêt dans' FacesContext'? – BalusC
1. il fonctionne dans tout le navigateur 2. Il peut en avoir besoin dans le futur – Dejell
1. Je ne suis pas sûr de savoir comment faire le travail dans un 'PhaseListener' au lieu d'un' Filter' ou juste tout droit dans la vue a été détecté par le navigateur web. Peux-tu élaborer? 2. Peut-être. – BalusC
Cette solution est nécessaire au travail avec des versions plus anciennes d'iPhone et d'iPad. Il semble que les navigateurs ultérieurs surdosent le Content-Type par défaut et font leur meilleure estimation. Mais les anciens navigateurs respectaient l'en-tête Content-Type et l'en-tête attendu. Grande solution qui était simple. – JeffJak