css – 内部样式表在IE9中不能与jsf一起使用

前端之家收集整理的这篇文章主要介绍了css – 内部样式表在IE9中不能与jsf一起使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用jsf2.0与primefaces.My应用程序工作正常,所有浏览器包括IE8 …但当我在IE9中运行我的应用程序我的内部样式表甚至没有采取浏览器(IE9)..样式被打破.

我的头上的css:

  1. <h:head>
  2. <Meta http-equiv="X-UA-Compatible" content="IE=9" />
  3.  
  4. <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
  6. <title>Chennai Volunteers</title>
  7. <link href="cv_website_styles.css" rel="stylesheet" type="text/css" />
  8. <link rel="stylesheet" type="text/css" href="css/style.css"/>
  9. <script charset="utf-8" src="http://widgets.twimg.com/j/2/widget.js"></script>
  10. <script type="text/javascript" src="js/jquery.min.js"></script>
  11. <script type="text/javascript" src="js/script.js"></script>
  12. </h:head>

我在控制台中遇到了以下错误

  1. java.lang.IllegalArgumentException: ContentTypeList does not contain a supported content type: text/css
  2. at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.selectContentType(HtmlRendererUtils.java:1905)
  3. at org.apache.myfaces.renderkit.html.HtmlRenderKitImpl.createResponseWriter(HtmlRenderKitImpl.java:223)
  4. at org.apache.myfaces.shared_impl.view.JspViewDeclarationLanguageBase.renderView(JspViewDeclarationLanguageBase.java:154)
  5. at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
  6. at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)
  7. at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
  8. at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
  9. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
  10. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  11. at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
  12. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
  13. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  14. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
  15. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
  16. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
  17. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
  18. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
  19. at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
  20. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
  21. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
  22. at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
  23. at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
  24. at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
  25. at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
  26. at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  27. at java.lang.Thread.run(Unknown Source)

提前致谢.

解决方法

我检查了你的网站chennaivolunteers.org,我注意到FacesServlet已映射到/ faces / *的URL模式而不是* .xhtml.因为你只使用亲戚< link>和< script>资源引用,它们(不必要地)也会通过FacesServlet.

IE9为CSS文件发送一个text / css的Accept-Header,而其他浏览器发送一个text / css; * / *的Accept-Header. FacesServlet本身不应该响应text / css请求.

基本上有两种方法可以解决这个问题:

>摆脱/ faces / *映射并用* .xhtml替换它.

  1. <servlet-mapping>
  2. <servlet-name>Faces Servlet</servlet-name>
  3. <url-pattern>*.xhtml</url-pattern>
  4. </servlet-mapping>

>在< link>中使用域相对网址和< script> (和< img>)引用,以便它们永远不会通过/ faces路径.

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

或者使用< base>标记,或使用< h:outputStylesheet>和< h:outputScript>用一个名字代替.

你的网站在几个资源上已经有相当多的404.修复它.检查浏览器内置Web开发人员工具集的“网络”,“网络”部分(按IE9 / Chrome / Firebug中的F12).

猜你在找的CSS相关文章