如何放弃PrimeFaces对话的透明度?

时间:2012-10-16 07:22:24

标签: jsf mobile jsf-2 dialog primefaces

我正在尝试使用JSF页面中的 Primefaces Dialog 组件显示警报。我可以显示对话框,但问题在于此对话框的透明度/不透明度。我通过设置opacity: 1.0覆盖了对话框的样式属性,但它没有用。我想放弃对话框的透明度。我怎样才能以简单的方式实现这一目标?

我的JSF页面:

<f:view xmlns="http://www.w3.org/1999/xhtml"
....
renderKitId="PRIMEFACES_MOBILE">
....
<pm:page title="Mobile Reports">
<pm:view id="reports" swatch="b">
<h:form>
<pm:content>
<div>
<h:form>
    ....
    <p:dialog id="myDialog"
        header="ERROR"
        widgetVar="dlg"
        modal="true"
        style="opacity: 1.0;"
        appendToBody="true">
        <p:commandButton id="decline" value="Couldn't display the report!"
            onclick="dlg.hide()" type="button" />
    </p:dialog>
    ....
    <p:commandButton id="contractInfo" action="ContractInfo.xhtml"
        value="Contract Information" style="width:100%;"
        onerror="dlg.show();">
    </p:commandButton>
    ....
</h:form>
</div>
</pm:content>
</h:form>
</pm:view>
</pm:page>
</f:view>

输出:

enter image description here

GPRS显示在JSF页面中,它不是对话框的一部分。但是,由于对话框是透明的,所以它是可见的。

注意: 我正在使用 primefaces-mobile-0.9.3.jar

3 个答案:

答案 0 :(得分:5)

我已经尝试在我的JSF页面中覆盖对话框组件的css样式 (注释!important 表达式):

<p:dialog id="myDialog" header="ERROR" widgetVar="dlg" modal="true"
        style="background: gray !important;" appendToBody="true">
        <p:commandButton id="decline" value="Couldn't display the report!"
            onclick="dlg.hide()" type="button" />
</p:dialog>

现在,对话框现在更好了,看起来像是:

enter image description here

但是,在我的项目中覆盖PrimeFaces库的常规样式表可能会帮助我更多地自定义对话框。

我的动态网络项目中的样式表路径: WebContent / assets / css / style.css 这可能是面对类似问题的人的参考。

答案 1 :(得分:1)

在提供自定义主题时,您应该创建主题文件。 PrimeFaces的默认主题是Aristo。有关如何创建自定义主题的详细信息,请参阅PrimeFaces Guidemobile PrimeFaces Guide

如果您不想创建完整主题,则应用默认主题。要覆盖应用主题中的样式,您需要使用!important。 (你已经发现了这一点。)

我使用的有用工具是FireBug。 FireBug显示哪些CSS规则应用于元素以及哪些规则被覆盖。

答案 2 :(得分:0)

对于遇到此问题的每个人,我只想找到一个解决方案:

<p:dialog header="Header" widgetVar="dlg1" showEffect="pop"
            styleClass="ui-page-theme-a ui-bar-inherit">

将primefaces inherit类添加到对话框中,默认情况下会显示。