4

説明 : JSF アプリケーションで、CSS プロパティを使用してメニューの背景画像を設定しています。

次のようにファイル構造を構成しました

  • これは私のCSSコードです

スタイル.css

  #menu 
  {
   height:35px;
   width:950px;
   background:url(images/default.gif);
   /*background:url(#{resource['images:default.gif']}); 
   background:url(#{resource['images/default.gif']});
   */
  }

このCSSファイルは/resources/cssディレクトリの下にあり、使用してFaceletsページにcssファイルをインポートしています

<h:head>
<h:outputStylesheet library="css" name="style.css"></h:outputStylesheet>
</h:head>

CSSファイルのインポートに問題はありません

問題の説明

  • FacesServlet を *.xhtml にマッピングしました。

     <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
     <url-pattern>*.xhtml</url-pattern>
     </servlet-mapping>
    

    ホームページを実行すると、css で設定されたメニュー画像が読み込まれません

  • FacesServlet画像のマップされた構成を削除すると、*.xhtml 完全に読み込まれます

私が試してみました

cssファイルで次の方法を試して、画像をロードしました

  1. background:url(images/default.gif);
  2. background:url(#{resource['images:default.gif']});
  3. background:url(#{resource['images/default.gif']});

しかし、私はまだ解決策を見つけることができませんでした。

更新されたソリューション

  • にリソース ハンドラーを追加しましたfaces-config.xml

    <application><resource-handler>org.omnifaces.resourcehandler.UnmappedResourceHandler</resource-handler> </application>

  • FacesServletでの構成web.xml

    <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.xhtml</url-pattern>
      <url-pattern>/javax.faces.resource/*</url-pattern>
    </servlet-mapping>
    
  • /resources/imagesディレクトリの下に画像を配置する

  • css ファイルの画像アクセス形式

    #menu {background: url(images/bg.png) }

4

1 に答える 1