内部样式表不工作在IE9与jsf [英] Internal stylesheet not working in IE9 with jsf
问题描述
我使用jsf2.0与primefaces.My应用程序正常工作,所有浏览器包括IE8 ...但是当我运行我的应用程序在IE9我的内部样式表甚至没有采取由浏览器(IE9)..样式是破碎。
我的头部css:
< h:head> ;
< meta http-equiv =X-UA-Compatiblecontent =IE = 9/>
< meta http-equiv =Content-Typecontent =text / html; charset = utf-8/>
< title>钦奈志愿者< / title>
< link href =cv_website_styles.css =stylesheettype =text / css/>
< link rel =stylesheettype =text / csshref =css / style.css/>
< script charset =utf-8src =http://widgets.twimg.com/j/2/widget.js>< / script>
< script type =text / javascriptsrc =js / jquery.min.js>< / script>
< script type =text / javascriptsrc =js / script.js>< / script>
< / h:head>
我在控制台中遇到以下错误:
java.lang.IllegalArgumentException:ContentTypeList不包含支持的内容类型:text / css
at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils .selectContentType(HtmlRendererUtils.java:1905)
在org.apache.myfaces.renderkit.html.HtmlRenderKitImpl.createResponseWriter(HtmlRenderKitImpl.java:223)
在org.apache.myfaces.shared_impl.view.JspViewDeclarationLanguageBase .renderView(JspViewDeclarationLanguageBase.java:154)
在org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
在org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor .java:85)
在org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
在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.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在org.apache中的org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
。 catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
在org.apache.catalina.core。 StandardContextValve.invoke(StandardContextValve.java:185)
在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
在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)
在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:515)
在org .apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:300)
在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(未知源)
在java.util。 concurrent.ThreadPoolExecutor $ Worker.run(未知源)
at java.lang.Thread.run(未知源)
我检查过您的网站chennaivolunteers.org,我注意到 FacesServlet
已映射到 / faces / *
的网址格式,而不是 *。xhtml
。由于您只使用相对的< link>
和< script>
资源引用,还要通过 FacesServlet
。
IE9为CSS文件发送接受标头的
text / css
,而其他浏览器发送接受标头
text / css; * / *
。 FacesServlet
本身不应对 text / css
请求作出响应。
有两种方法可以解决这个问题:
-
除去
面向/ *
映射并替换为*。xhtml
。< servlet-mapping>
< servlet-name> Faces Servlet< / servlet-name>
< url-pattern> *。xhtml< / url-pattern>
< / servlet-mapping>
-
在
中使用网域相对网址< link> code>和
< script>
(和< img>
)引用,/ faces
路径。< ui:param name = rootvalue =#{request.contextPath} //>
< link href =#{root} cv_website_styles.css =stylesheettype =text / css/>
< link rel =stylesheettype =text / csshref =#{root} css / style.css/>
< script type =text / javascriptsrc =#{root} js / jquery.min.js>< / script>
< script type =text / javascriptsrc =#{root} js / script.js>< / script>
或使用
< base>
,或使用或
和 < h:outputScript>
您的网站在某些资源上有相当多的404。修复这一点。检查浏览器的内置网络开发者工具集(按IE9 / Chrome / Firebug中的F12)的网络,网络部分。
I am using jsf2.0 with primefaces.My application was working fine with all browsers includes IE8... but when i run my application in IE9 my internal stylesheet not even taken by browser(IE9).. The styles are broken.
my css on head:
<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>
and i am getting the follwing error in my console,
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)
thanks in advance.
I checked your website chennaivolunteers.org and I noticed that FacesServlet
is been mapped on an URL pattern of /faces/*
instead of *.xhtml
. As you're using only relative <link>
and <script>
resource references, they will (unnecessarily) go through the FacesServlet
as well.
IE9 sends for CSS files a Accept-Header
of text/css
while other browsers sends a Accept-Header
of text/css;*/*
. The FacesServlet
itself is not supposed to respond on text/css
requests.
There are basically 2 ways to fix this:
Get rid of the
/faces/*
mapping and replace it by*.xhtml
.<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>
Use domain-relative URLs in
<link>
and<script>
(and<img>
) references so that they never go through the/faces
path.<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>
Or use the
<base>
tag, or use<h:outputStylesheet>
and<h:outputScript>
with aname
instead.
Your site has by the way quite some 404's on several resources. Fix that as well. Check the "Net", "Network" section of the browser's builtin web developer toolset (press F12 in IE9/Chrome/Firebug).
这篇关于内部样式表不工作在IE9与jsf的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!