2011-06-28 57 views
2

我正在使用PrimeFaces 3.0和JSF 2.0。在我的web應用程序中,當用戶的瀏覽器閒置一段時間後,我會在頁面上顯示一個模態對話框,並通過Ajax調用在服務器端觸發會話失效。在瀏覽器中,模式對話框會顯示一條簡單的消息,指出由於超出了空閒時間限制而終止了會話。這一切工作正常(見截圖)。PrimeFaces 3.0 - 如何覆蓋對話框覆蓋的默認不透明度?

編輯:以 「appendToBody」 更新修復

enter image description here

這裏是我的facelet頁面的代碼:

<p:idleMonitor timeout="#{initParam[clientSideIdleThreshold]}"> 
     <p:ajax 
      event="idle" 
      listener="#{logoutBean.idleListener}" 
      oncomplete="idleDialog.show()" /> 
     <p:ajax 
      event="active" 
      listener="#{logoutBean.activeListener}" /> 
    </p:idleMonitor> 
    <p:dialog 
      header="Session Exceeded Idle Limit" 
      widgetVar="idleDialog" 
      modal="true" 
      fixedCenter="true" 
      closable="false" 
      draggable="false" 
      resizable="false" 
      appendToBody="true" 
      height="200" 
      width="400"> 
     <h:outputText value="Session Terminated" /> 
    </p:dialog> 

我想要做的是覆蓋PrimeFaces對話框覆蓋層的默認不透明度並使其更加不透明。有誰知道如何做到這一點?

我希望這可以通過把一些CSS在正確的地方,因爲我會真的希望避免編寫任何JavaScript來實現這一點來實現。

用戶環境中的目標瀏覽器是IE 6和7

+0

你的網站在哪裏?這很可能是一個CSS屬性,但我們不能告訴你,直到我們看到它是如何構建的:) – Kyle

+0

你確定這個對話框是模態的嗎(modal ='true')?看起來好像根本沒有覆蓋。 – Fortega

+0

該網站在私人網絡上,不幸的是。使用的CSS與PrimeFaces 3.0發行版一起打包,該發行版嚴重依賴於jQuery UI Themeroller樣式。 –

回答

3

Fortega的答案是某些瀏覽器是正確的,但是對於IE 7則需要使用下面的CSS:

.ui-widget-overlay { 
    filter:alpha(opacity=80); /* works in IE 7 */ 
    opacity: 0.8; /* works in Firefox */ 
} 

根據www.w3schools.com透明度CSS屬性是非標準的,但建議列入CSS3。

6
在你的CSS

.ui-widget-overlay { 
    opacity: 0.8; 
} 

或其他一些價值:)

但是,你需要確保對話框您顯示的是模態(<p:dialog modal="true"),否則不會顯示疊加。

+0

這適用於Firefox,但不適用於IE 7(這是用戶環境的目標瀏覽器)。我會再試一試,看看我能否找到問題。我正在使用'modal =「true」',但它一直顯示疊加下的模式框。我可以接受這個簡單的通知,比如我的空閒消息,但顯然你不能使用覆蓋覆蓋的表單對話框。我認爲這可能是PrimeFaces 3.0快照中的缺陷,但也許我做了其他錯誤。 –