2012-10-16 31 views
5

मैं अपने JSF पृष्ठ में प्राइमफ़ेस संवाद घटक का उपयोग करके एक अलर्ट प्रदर्शित करने का प्रयास कर रहा हूं। मैं संवाद प्रदर्शित कर सकता था, लेकिन मेरी समस्या इस संवाद की पारदर्शिता/अस्पष्टता के साथ है। मैंने 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

जीपीआरएस JSF पेज में प्रदर्शित किया जाता है, यह नहीं संवाद का एक हिस्सा है। हालांकि, यह तब दिखाई देता है जब संवाद पारदर्शी है।

नोट: मैं primefaces-मोबाइल-0.9.3.jar

उत्तर

5

मुझे लगता है कि की तरह मेरे JSF पेज में संवाद घटक के अधिभावी सीएसएस शैली की कोशिश की है उपयोग कर रहा हूँ (रिमार्क ! महत्वपूर्ण अभिव्यक्ति):

<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

हालांकि, मेरे प्रोजेक्ट में प्राइमफेस लाइब्रेरी की सामान्य स्टाइलशीट को ओवरराइड करने से मुझे संवाद को अनुकूलित करने में और मदद मिल सकती है।

मेरी गतिशील वेब परियोजना में स्टाइलशीट पथ: WebContent/संपत्ति/सीएसएस/style.css इस संदर्भ हो सकता है जिनके लिए एक ऐसी ही समस्या का सामना करना पड़।

+0

आप प्राइमफेस की स्टाइलशीट को ओवरराइड कर सकते हैं। इस जवाब पर एक नज़र डालें। [कैसे-टू-ओवरराइड-स्टाइलशीट-ऑफ-प्राइमफेस] (http://stackoverflow.com/questions/8578494/how-to-override-stylesheets-of-primefaces/8581199#8581199) – Ravi

+0

अच्छे उत्तर के लिए वोट दें। :) – erencan

1

एक अनुकूलित थीम की आपूर्ति करते समय आपको थीम फ़ाइल बनाना होगा। प्राइमफेस की डिफ़ॉल्ट थीम अरिस्टो है। कस्टम थीम बनाने के तरीके के बारे में अधिक जानकारी के लिए PrimeFaces Guide या mobile PrimeFaces Guide देखें।

यदि आप हालांकि एक पूर्ण विषय बनाना नहीं चाहते हैं तो डिफ़ॉल्ट थीम लागू होती है। लागू विषय में शैलियों को ओवरराइड करने के लिए आपको !important का उपयोग करने की आवश्यकता है। (हालांकि आपने इसे पहले से ही खोजा है।)

फ़ायरबग का उपयोग करने वाला एक उपयोगी टूल है। फायरबग दिखाता है कि कौन से सीएसएस नियम किसी तत्व पर लागू होते हैं और कौन से नियम ओवरराइड होते हैं।

+2

स्टाइलशीट में 'महत्वपूर्ण 'अनिवार्य नहीं है। यह इस बात पर निर्भर करता है कि आप अपनी स्टाइलशीट कैसे लोड कर रहे हैं। यदि आपका प्राइमफेस से पहले आता है, तो यह ओवरराइड हो जाएगा। 'महत्वपूर्ण' इसे रोकता है।लेकिन यह एक बदसूरत कामकाज है। अपने '' को '' में बेहतर पुनर्व्यवस्थित करें ताकि यह * प्राइमफेस के बाद * लोड हो। ओपी की विशिष्ट समस्या रास्ते से थोड़ा अलग है। – BalusC

+0

@ बालुससी आईआईआरसी प्राइमफेस सीएसएस हमेशा जेएसएफ पेज से पहले लोड किया जाता है। इसलिए स्टाइल शीट को पुनर्व्यवस्थित करना संभव नहीं है। – siebz0r

+1

यह सच नहीं है। – BalusC

0

जो कोई यह समस्या है करने के लिए, मैं सिर्फ एक समाधान तिनका इस लगता है:

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

जोड़े primefaces संवाद करने के लिए वर्ग के वारिस, और यह डिफ़ॉल्ट रूप से दिखाई देगा।