Ho fortemente bisogno di ignorare JSF 2.0 intestazione Content-Type. Predefinito èJSF, sovrascrive le intestazioni HTTP
Content-Type:application/xhtml+xml; charset=UTF-8
ma ho bisogno
Content-Type:text/html; charset=UTF-8
Grazie.
Ho fortemente bisogno di ignorare JSF 2.0 intestazione Content-Type. Predefinito èJSF, sovrascrive le intestazioni HTTP
Content-Type:application/xhtml+xml; charset=UTF-8
ma ho bisogno
Content-Type:text/html; charset=UTF-8
Grazie.
Come su
<f:view contentType="text/html" />
Utilizzare il right doctype.
<!DOCTYPE html>
Niente di più. Inoltre non mettere la dichiarazione <?xml?>
in cima. Ecco un modello minimo:
<!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>
È il doctype HTML5. È completamente compatibile con il markup XHTML 1.x e aggiunge ulteriori vantaggi.
cancellata la mia risposta non chiara, e grazie per averlo chiarito. –
L'approccio seguito funziona in tutti i browser:
Scrivi una 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");
}
}
e registrarlo in faccia-context.xml:
<lifecycle>
<phase-listener>com.mycompnay.listener.ContentTypePhaseListener </phase-listener>
</lifecycle>
Non è un "PhaseListener" una soluzione "troppo complicata" per questo semplice problema? A prescindere da questo, perché non solo un 'Filtro' dal momento che non avrai alcun interesse nel' FacesContext'? – BalusC
1. funziona in tutto il browser 2. Potrebbe averne bisogno in futuro – Dejell
1. Non sono sicuro di come sia stato rilevato il lavoro all'interno di un 'PhaseListener' invece di un' Filter' o semplicemente dritto nella vista il browser. Puoi elaborare? 2. Forse. – BalusC
Questa soluzione è necessaria per il lavoro con le versioni precedenti di iPhone e iPad. Sembra che i futuri brower stiano eliminando il Content-Type di default e facendo la loro ipotesi migliore. Ma i browser più vecchi rispettavano l'intestazione Content-Type e l'intestazione prevista. Ottima soluzione che era semplice. – JeffJak