内部样式表不工作在IE9与jsf [英] Internal stylesheet not working in IE9 with jsf

查看:77
本文介绍了内部样式表不工作在IE9与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 a name 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆