如何在JSF中使用Font Awesome 4.x CSS文件?浏览器找不到字体文件

前端之家收集整理的这篇文章主要介绍了如何在JSF中使用Font Awesome 4.x CSS文件?浏览器找不到字体文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在JSF中集成 Font Awesome.
  1. <h:outputStylesheet library="font-awesome" name="css/font-awesome.min.css" />

但是浏览器找不到字体文件.它们显示为空方块:

我希望它们如下所示:

这是怎么造成的,如何解决

解决方法

Font Awesome CSS文件默认通过相对路径引用这些字体文件../如下所示:
  1. @font-face {
  2. font-family: 'FontAwesome';
  3. src: url('../fonts/fontawesome-webfont.eot?v=4.3.0');
  4. src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');
  5. font-weight: normal;
  6. font-style: normal;
  7. }

如果在不同的路径上请求CSS文件本身,这将失败. JSF< h:outputStylesheet>如果指定库属性,将执行此操作.此外,JSF将为这些资源使用特殊的/javax.faces.resource/*前缀模式,以便特别调用JSF资源处理程序,从而允许自定义.细节可以在What is the JSF resource library for and how should it be used?找到

提供如下文件夹结构,

  1. WebContent
  2. |-- resources
  3. | `-- font-awesome
  4. | |-- css
  5. | | |-- font-awesome.css
  6. | | `-- font-awesome.min.css
  7. | `-- fonts
  8. | |-- fontawesome-webfont.eot
  9. | |-- fontawesome-webfont.svg
  10. | |-- fontawesome-webfont.ttf
  11. | |-- fontawesome-webfont.woff
  12. | `-- fontawesome-webfont.woff2
  13. :

Font Awesome CSS包含如下:

  1. <h:outputStylesheet library="font-awesome" name="css/font-awesome.min.css" />

然后你需要编辑如下的CSS文件,使用EL中的#{resource}映射来引用/ resources文件夹中的字体文件和相应的库和资源名称(并且库名最终作为查询字符串参数,你,还需要替换?by&,如果你不使用库名,这不是必需的).

  1. @font-face {
  2. font-family: 'FontAwesome';
  3. src: url("#{resource['font-awesome:fonts/fontawesome-webfont.eot']}&v=4.3.0");
  4. src: url("#{resource['font-awesome:fonts/fontawesome-webfont.eot']}&#iefix&v=4.3.0") format('embedded-opentype'),url("#{resource['font-awesome:fonts/fontawesome-webfont.woff2']}&v=4.3.0") format('woff2'),url("#{resource['font-awesome:fonts/fontawesome-webfont.woff']}&v=4.3.0") format('woff'),url("#{resource['font-awesome:fonts/fontawesome-webfont.ttf']}&v=4.3.0") format('truetype'),url("#{resource['font-awesome:fonts/fontawesome-webfont.svg']}&v=4.3.0#fontawesomeregular") format('svg');
  5. font-weight: normal;
  6. font-style: normal;
  7. }

确保在编辑CSS文件后重新启动服务器.在JSF资源处理程序第一次读取CSS文件然后记住应用程序范围时,只检测到某个CSS文件中EL表达式的存在.

如果您在服务器日志中看到JSF1091警告,请查看以下字体文件

WARNING: JSF1091: No mime type could be found for file [some font file]. To resolve this,add a mime-type mapping to the applications web.xml.

然后,您需要通过将以下mime映射添加到web.xml来相应地执行操作:

  1. <mime-mapping>
  2. <extension>eot</extension>
  3. <mime-type>application/vnd.ms-fontobject</mime-type>
  4. </mime-mapping>
  5. <mime-mapping>
  6. <extension>otf</extension>
  7. <mime-type>font/opentype</mime-type>
  8. </mime-mapping>
  9. <mime-mapping>
  10. <extension>svg</extension>
  11. <mime-type>image/svg+xml</mime-type>
  12. </mime-mapping>
  13. <mime-mapping>
  14. <extension>ttf</extension>
  15. <mime-type>application/x-font-ttf</mime-type>
  16. </mime-mapping>
  17. <mime-mapping>
  18. <extension>woff</extension>
  19. <mime-type>application/x-font-woff</mime-type>
  20. </mime-mapping>
  21. <mime-mapping>
  22. <extension>woff2</extension>
  23. <mime-type>application/x-font-woff2</mime-type>
  24. </mime-mapping>

如果您碰巧使用JSF实用程序库OmniFaces,使用#{resource}映射编辑CSS文件的替代方法是安装OmniFaces UnmappedResourceHandler并根据其文档重新配置FacesServlet映射.您只需要确保不再通过库引用字体CSS文件

  1. <h:outputStylesheet name="font-awesome/css/font-awesome.min.css" />

也可以看看:

> How to use Font Awesome from webjars.org with JSF

猜你在找的CSS相关文章