Ich muss dringend JSF 2.0 Content-Type Header überschreiben. Standard ist esJSF, überschreiben HTTP-Header
Content-Type:application/xhtml+xml; charset=UTF-8
Aber ich brauche
Content-Type:text/html; charset=UTF-8
Dank.
Ich muss dringend JSF 2.0 Content-Type Header überschreiben. Standard ist esJSF, überschreiben HTTP-Header
Content-Type:application/xhtml+xml; charset=UTF-8
Aber ich brauche
Content-Type:text/html; charset=UTF-8
Dank.
Wie wäre es
<f:view contentType="text/html" />
die right doctype verwenden.
<!DOCTYPE html>
Nichts mehr. Stellen Sie auch nicht <?xml?>
Deklaration oben. Hier ist eine minimale Vorlage:
<!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 ist der HTML5 Doctype. Es ist voll kompatibel mit XHTML 1.x Markup und bietet weitere Vorteile.
löschte meine unklare Antwort, und danke für das Löschen. –
Der folgende Ansatz funktioniert in allen Browsern:
eine Phaselistener schreiben:
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");
}
}
und registrieren Sie es in faces-context.xml:
<lifecycle>
<phase-listener>com.mycompnay.listener.ContentTypePhaseListener </phase-listener>
</lifecycle>
Ist ein 'PhaseListener' nicht eine etwas zu komplizierte Lösung für dieses einfache Problem? Unabhängig davon, warum nicht nur ein 'Filter', da Sie kein Interesse am' FacesContext' haben werden? – BalusC
1. Es funktioniert in allen Browser 2. Er könnte es in der Zukunft benötigen – Dejell
1. Ich bin mir nicht sicher, wie der Job in einem 'PhaseListener' anstelle von' Filter' oder nur gerade in der Ansicht wurde von erkannt der Webbrowser. Kannst du es ausarbeiten? 2. Vielleicht. – BalusC
Diese Lösung ist notwendig, um Arbeit mit älteren Versionen von iPhone und iPad. Scheint so, als würden später die Browser den Standard-Content-Type überlisten und ihre besten Ratschläge geben. Aber ältere Browser respektierten den Content-Type-Header und erwarteten Header. Tolle Lösung, die einfach war. – JeffJak