2012-01-30 12 views
5

मेरे पास एक पृष्ठ मोडल संवाद है जो उपयोगकर्ता द्वारा संपादन बटन पर क्लिक करने पर प्रदान किया जाता है। संवाद उपयोगकर्ता नाम और पासवर्ड के लिए पूछता है और एक सबमिट बटन है। यदि उपयोगकर्ता नाम और पासवर्ड मान्य नहीं है, तो एक त्रुटि प्रदर्शित होती है।प्राइमफ़ेस संवाद पृष्ठभूमि अस्पष्टता युगल जब कार्रवाई में विफल रहता है

समस्या यह है कि यदि उपयोगकर्ता नाम और पासवर्ड प्रमाणित नहीं करते हैं, तो प्रमाणीकरण विफल होने पर मोडल पृष्ठभूमि अधिक से अधिक अंधेरा हो जाती है।

इसका कारण क्या होगा?

<p:dialog id="dialog" header="Login To Edit" widgetVar="dialog" visible="#{fundingBacker.loginVisible}" modal="true" 
    resizable="false" closable="false" draggable="true" rendered="#{!userBean.loggedIn}"> 
    <h:form> 

     <p:ajaxStatus style="width:16px;height:16px;"> 
      <f:facet name="start"> 
       <p:graphicImage value="../images/loading4.gif" /> 
      </f:facet> 
      <f:facet name="complete"> 
       <h:outputText value="" /> 
      </f:facet> 
     </p:ajaxStatus> 

     <p:messages autoUpdate="true" showDetail="true" /> 

     <h:panelGrid columns="2" cellpadding="5"> 

      <h:outputLabel for="lanId" value="LanID:" /> 
      <p:inputText value="#{currentUser.lanID}" id="lanId" required="true" label="lanId" requiredMessage="Lan ID is required" /> 

      <h:outputLabel for="password" value="Password:" /> 
      <p:password value="#{currentUser.password}" id="password" required="true" label="password" feedback="false" requiredMessage="Password is required" /> 

      <p:commandButton id="loginButton" value="Login" type="submit" styleClass="primaryButton" action="#{currentUser.performLogin}" update="dialog"/> 

     </h:panelGrid> 
    </h:form> 
</p:dialog> 

उत्तर

3

आप पहली बार इसे बंद किए बिना संवाद अपडेट कर रहे हैं। मुझे यकीन नहीं है कि यह एक बग या सुविधा है, लेकिन visible विशेषता के कारण, ओवरले को प्रत्येक संवाद अद्यतन पर पुन: प्रारंभ किया जाता है। आप इसे अधिक कॉम्पैक्ट टेस्टकेस के साथ प्राइमफेस लोगों को रिपोर्ट करना चाहेंगे।

सबसे आसान समाधान AJAX सफलता पर संवाद को बंद करना है। एंडुसर की आंखों को झपकी देकर इसे तेजी से फिर से चलाया जाएगा।

<p:commandButton ... onsuccess="dialog.hide()" update="dialog" /> 

आप शायद ही finetune करने की आवश्यकता होगी visible और rendered सुनिश्चित करें कि संवाद फिर से खोल दी है, जब सत्यापन में विफल बनाने के लिए जिम्मेदार बताते हैं (जैसे उपयोगकर्ता अभी भी प्रवेश न होने पर जब)।

एक विकल्प संवाद के बजाय संवाद के फॉर्म को अपडेट करना एक विकल्प है।

<p:commandButton ... update="@form" /> 

या उस विशेषता को पूरी तरह से निकालने के लिए। यह पहले से ही @form पर डिफ़ॉल्ट है।

<p:commandButton ... /> 

सफल लॉगिन पर संवाद बंद करने के बाद RequestContext#execute() द्वारा किया जा सकता है।

RequestContext.getCurrentInstance().execute("dialog.hide()"); 
+0

'अपडेट = "संवाद को हटा रहा है" 'काम किया। धन्यवाद। – Catfish

+0

आपका स्वागत है। – BalusC

0

सर्वर से प्रत्येक अनुरोध के बाद आपके संवाद डुप्लिकेट किए जा रहे हैं। संवाद विशेषता सेट करने का प्रयास करें, appendToBody="true" जो इसे होने से रोकना चाहिए।

+0

मैंने जोड़ा कि यह कुछ भी अलग नहीं किया। – Catfish

संबंधित मुद्दे