4

Primefacesでjsf2.0を使用しています。アプリケーションはIE8を含むすべてのブラウザーで正常に動作していました...しかし、IE9でアプリケーションを実行すると、ブラウザー(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>

コンソールで次のエラーが発生します。

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)

前もって感謝します。

4

1 に答える 1

14

あなたのウェブサイト chennaivolunteers.org を確認したところ、ではなく のFacesServletURL パターンにマッピングされていることに気付きました。相対参照とリソース参照のみを使用しているため、(不必要に) も通過します。/faces/**.xhtml<link><script>FacesServlet

IE9 は CSS ファイルの a を送信しますが、他のブラウザーは of を送信Accept-Headerします。自体は、リクエストに応答することは想定されていません。text/cssAccept-Headertext/css;*/*FacesServlettext/css

これを修正するには、基本的に 2 つの方法があります。

  • マッピングを取り除き、 に/faces/*置き換え*.xhtmlます。

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    
  • <link>および<script>(および) 参照でドメイン相対 URL を使用<img>して、パスを経由しないようにし/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>タグを使用するか、代わりに<h:outputStylesheet>andを使用します。<h:outputScript>name

ところで、あなたのサイトにはいくつかのリソースでかなりの数の 404 があります。それも修正してください。ブラウザの組み込み Web 開発者ツールセットの「ネット」、「ネットワーク」セクションを確認します (IE9/Chrome/Firebug では F12 を押します)。

于 2012-06-22T14:43:49.307 に答える