2010-09-27 18 views
8

ओवरराइड करें मुझे दृढ़ता से जेएसएफ 2.0 सामग्री-प्रकार शीर्षलेख को ओवरराइड करने की आवश्यकता है। Default यहजेएसएफ, HTTP शीर्षलेख

Content-Type:application/xhtml+xml; charset=UTF-8 

है लेकिन मैं जरूरत

Content-Type:text/html; charset=UTF-8 

धन्यवाद।

उत्तर

5

के बारे में
<f:view contentType="text/html" /> 
+0

यह समाधान काम के लिए आवश्यक है आईफोन और आईपैड के पुराने संस्करणों के साथ। ऐसा लगता है कि बाद के ब्रोवर डिफ़ॉल्ट सामग्री-प्रकार को ओवर-राइड कर रहे हैं और अपना सर्वश्रेष्ठ अनुमान लगा रहे हैं। लेकिन पुराना ब्राउज़र सामग्री-प्रकार शीर्षलेख और हेडर की अपेक्षा कर रहा था। महान समाधान जो सरल था। – JeffJak

6

right doctype का उपयोग कैसे।

<!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 ड्यूट टाइप है। यह एक्सएचटीएमएल 1.x मार्कअप के साथ पूरी तरह से संगत है और अधिक फायदे जोड़ता है।

+0

ने मेरे अस्पष्ट उत्तर को हटा दिया, और इसे साफ़ करने के लिए धन्यवाद। –

3

निम्नलिखित दृष्टिकोण सभी ब्राउज़रों में काम करता है:

एक 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"); 

     } 
    } 

और चेहरे-context.xml में इसे पंजीकृत:

<lifecycle> 
     <phase-listener>com.mycompnay.listener.ContentTypePhaseListener </phase-listener> 
    </lifecycle> 
+0

इस साधारण मुद्दे के लिए 'PhaseListener' थोड़ा बहुत जटिल "समाधान नहीं है? इसके बावजूद, क्यों न केवल 'फ़िल्टर' क्यों न करें क्योंकि आपको 'FacesContext' में कोई रूचि नहीं होगी? – BalusC

+0

1. यह सभी ब्राउज़र 2 में काम करता है। उसे भविष्य में – Dejell

+0

में इसकी आवश्यकता हो सकती है। मुझे यकीन नहीं है कि 'फ़िल्टर' के बजाय 'फेज लिस्टनर' के अंदर नौकरी कैसे करनी है या केवल सीधे दृश्य में पता चला है वेबब्रोसर क्या आप विस्तार से समझा सकते हैं? 2. शायद। – BalusC

संबंधित मुद्दे