【发布时间】:2011-11-12 14:08:30
【问题描述】:
我有一个 JSF2/Richfaces 4 项目,我想在其中使用默认皮肤之一,但我也想使用我自己的自定义样式表设置一些东西的样式。这听起来很简单,但我发现至少在某些情况下,我自己的风格没有被使用。明确地说,这是我相关的 web.xml 上下文参数:
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.control_skinning</param-name>
<param-value>enable</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.control_skinning_classes</param-name>
<param-value>enable</param-value>
</context-param>
我的 CSS 文件包含:
<h:outputStylesheet name="jsp-css.css" library="css" />
一个这样的实际样式定义:
.obsOptBtnSel{
background-color: transparent;
background-image: url('/images/circleY.gif');
background-repeat: no-repeat;
background-position: center;
border: none;
text-align: center;
width: 2em;
height: 2em;
}
以及使用样式的实际按钮:
<h:commandButton
value="?"
styleClass="#{obs.observation.observationExtent == -1.0 ? 'obsOptBtnSel' : 'obsOptBtnUns'}"
id="unknownButton"
/>
所以,有人会认为我会从相关的 blueSky 皮肤继承样式,然后由于我指定了一个样式类,因此自定义样式表中提到的任何属性都将被覆盖。
但是,当我查看 Firebug 中的元素时,我看到我的 styleClass 被皮肤指定的元素覆盖,例如它一直使用 blueSky 背景图像而不是我的。
我知道我可以通过简单地将 !important 放在样式表中的所有样式之后来解决此问题,但这似乎是处理此问题的一种非常糟糕且不必要的方法。
我在这里做错了什么?还有其他解决方案吗?
【问题讨论】:
标签: css jsf-2 richfaces stylesheet