JSF h:outputStylesheet转换器 - 动态css?

时间:2012-01-05 11:41:42

标签: java css jsf-2

我刚注意到<h:outputStylesheet/>有一个转换器属性。将虚拟(直通)转换器连接到它后,没有任何反应。仔细观察,看起来即使按下浏览器刷新按钮,转换器也不会被调用。

这个属性对任何事情都有好处吗?它只是作为各种设计决策的副作用吗?

我问的原因是用less或类似的方式执行一些客户端或服务器端的css处理会很好,我认为这个属性可能有帮助。

1 个答案:

答案 0 :(得分:12)

  

这个属性对任何事情都有好处吗?它只是作为各种设计决策的副作用吗?

这确实是“按设计”,因为该组件扩展了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。