2012-06-22 6 views
4

primefaces.My 응용 프로그램에서 jsf2.0을 사용하고 있습니다. IE8을 포함한 모든 브라우저에서 정상적으로 작동합니다 ...하지만 브라우저에서 가져온 내 내부 스타일 시트를 IE9에서 실행하면 IE9) .. 스타일이 깨졌습니다. 머리에jsf가있는 IE9에서 내부 스타일 시트가 작동하지 않습니다

내 CSS : 사전에

<h:head> 
<meta http-equiv="X-UA-Compatible" content="IE=9" /> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>Chennai Volunteers</title> 
<link href="cv_website_styles.css" rel="stylesheet" type="text/css" /> 
<link rel="stylesheet" type="text/css" href="css/style.css"/> 
<script charset="utf-8" src="http://widgets.twimg.com/j/2/widget.js"></script> 
<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/script.js"></script> 
</h:head> 

그리고 난 내 콘솔에서 follwing을 오류가 발생하고,

java.lang.IllegalArgumentException: ContentTypeList does not contain a supported content type: text/css 
at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.selectContentType(HtmlRendererUtils.java:1905) 
at org.apache.myfaces.renderkit.html.HtmlRenderKitImpl.createResponseWriter(HtmlRenderKitImpl.java:223) 
at org.apache.myfaces.shared_impl.view.JspViewDeclarationLanguageBase.renderView(JspViewDeclarationLanguageBase.java:154) 
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263) 
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) 
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

감사합니다.

답변

14

귀하의 웹 사이트 chennaivolunteers.org를 확인한 결과 대신 의 URL 패턴에 FacesServlet이 매핑되었음을 확인했습니다. 상대 <link><script> 리소스 참조 만 사용하기 때문에 FacesServlet을 (불필요하게) 통과하게됩니다.

IE9는 Accept-Headertext/css이고 다른 브라우저는 Accept-Headertext/css;*/* 인 CSS 파일을 전송합니다. FacesServlet 그 자체는 text/css 요청에 응답하지 않아야합니다.

  • /faces/* 매핑 제거하고 *.xhtml로 교체하기 :

    는 기본적으로이 문제를 해결하는 두 가지 방법이 있습니다. <link><script> (및 <img>) 참조에

    <servlet-mapping> 
        <servlet-name>Faces Servlet</servlet-name> 
        <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
    
  • 사용 도메인 상대 URL은 결코 /faces 경로를 통해 갈 수 있도록.

    <ui:param name="root" value="#{request.contextPath}/" /> 
    <link href="#{root}cv_website_styles.css" rel="stylesheet" type="text/css" /> 
    <link rel="stylesheet" type="text/css" href="#{root}css/style.css"/> 
    <script type="text/javascript" src="#{root}js/jquery.min.js"></script> 
    <script type="text/javascript" src="#{root}js/script.js"></script> 
    

    또는이 <base> 태그를 사용하거나 대신 name으로 <h:outputStylesheet><h:outputScript>를 사용합니다.

귀하의 사이트는 일부 리소스가 일부 404에 있습니다. 그것도 고쳐라. 브라우저의 내장 웹 개발자 도구 세트 (IE9/Chrome/Firebug의 F12 키를 누름)의 "인터넷", "네트워크"섹션을 확인하십시오.

+0

Balusc, 위대한 .. 정확히 우리가 만든 실수입니다 ... 감사합니다. – sathesh

+0

내 응용 프로그램이 JSF 1.2 및 RichFaces 3.3.x를 사용하고 있기 때문에 이것은 제 경우의 솔루션의 일부였습니다. [This] (http://technology-for-human.blogspot.com/2011/12/jsf-12-myfaces-richfaces-33x-ie-9.html)는 대부분의 부분에서 작동했습니다. – Lal

관련 문제