我刚刚注意到<h:outputStylesheet/>有一个转换器属性。在将虚拟(直通)转换器附加到它之后,什么也没有发生。仔细检查一下,即使点击了浏览器刷新按钮,转换器似乎也没有被调用。
这个属性有什么好处吗?这只是不同设计决策的副作用吗?
我这样问的原因是,使用less或类似的工具执行一些客户端或服务器端的css处理会很好,我认为这个属性可能会有所帮助。
发布于 2012-01-05 22:08:31
这个属性有什么用吗?这只是不同设计决策的副作用吗?
这确实是“故意的”,因为该组件扩展了UIOutput。它确实没有使用转换器做任何事情。
我问这个问题的原因是,如果能用更少或更类似的代码来执行一些客户端或服务器端的css处理,那就更好了,我想这个属性可能会有所帮助。
你可以在<h:outputStylesheet>加载的CSS资源中以通常的方式使用EL。这最初是为了正确解析背景图像资源而实现的。
.some {
background-image: url(#{resource[images/some.png]});
}上面的示例假设图像是/resources/images/some.png格式的。如果使用的是库,则需要在资源名称前加上libraryname:前缀。
.some {
background-image: url(#{resource[somelibrary:images/some.png]});
}它假设图像是/resources/somelibrary/images/some.png格式的。
但除此之外,您基本上可以将CSS资源中的EL用于其他任何事情。例如动态解析颜色、字体等。
.some {
color: #{theme.color};
font: #{theme.font};
}其中#{theme}可以是会话,也可以是应用程序范围的托管bean。
https://stackoverflow.com/questions/8741903
复制相似问题