<h:outputstylesheet>和相关参考</h:outputstylesheet>

时间:2013-10-08 19:09:43

标签: css jsf-2

我以典型的方式设置了JSF项目:

myproject
  |-- src/main/webapps
  |    |-- resources
  |    |    |-- css
  |    |    |     |-- 3rdparty.css
  |    |    |      
  |    |    |-- fonts  
  |    |         |    
  |    |         |-- myspecialfont.woff
  |    |         

然后在我的JSF html中:

 <h:outputStylesheet name="3rdparty.css" library="css"/>

这很有效,因为如果我需要升级,我可以保持目录一致。

但是,在这种情况下,3rdparty.css文件包含相对引用:

@font-face {
  font-family: 'Lato';
  src: url('../fonts/myspecialfont.woff');
}

由于h:outputStylesheet构造URI以使用mywebapp/javax.faces.resource/3rdparty.css,这将破坏其中的相对引用,因为该路径现在将引用mywebapp/fonts/myspecialfont.woff

有没有一种方法可以保持JSF引用的这些本地托管的第三方库来处理这种相对引用而无需手动更改CSS?

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 请勿使用outputStyleSheet,而是将其直接包含在模板中
  2. 修改CSS文件内容(如TemarV建议的那样)
  3. 不幸的是,没有太多可以做的事情,因为资源是使用库中的不同路径来呈现的。资源引用被指定为URL参数,而不是URL的一部分。

    编辑:我想强调第三个选项 - 编写自定义ResourceHandler。我不得不在这些方面做点什么。您可以在 -

    了解更多相关信息

    http://roguexz.blogspot.in/2013/10/jsf-2-returning-resource-url-that-is.html