2010-06-01 4 views
5

मैं एक जेएसएफ आवेदन विकसित कर रहा हूं और मेरे पास कई उपयोगकर्ता फॉर्म हैं जहां मैं जेएसएफ सत्यापन का उपयोग करता हूं। मेरे पास एक समस्या है जो मुझे परेशान करती है, इसे एक उदाहरण के साथ बताना आसान होगा।एच कैसे साफ़ करें: संदेश या समृद्ध: जेएसएफ में संदेश मूल्य?

    <h:panelGroup> 
        <h:selectOneRadio id="gender" value="#{registrationController.person.gender}" 
             required="true" requiredMessage="#{msg.commonErrorBlankField}"> 
         <f:selectItems value="#{registrationController.genders}" /> 
        </h:selectOneRadio> 
        <rich:spacer /> 
        <rich:message for="gender" errorLabelClass="errorLabel"> 
         <f:facet name="errorMarker"> 
          <h:graphicImage value="#{msg.imageExclamation}" /> 
         </f:facet> 
        </rich:message> 
       </h:panelGroup> 

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

क्या किसी को पता है कि एच: संदेश फ़ील्ड को साफ़ करने के लिए कोई कामकाज है या नहीं, जब मैं कमांड बटन पर क्लिक करता हूं तो सत्यापन पृष्ठ को उसी पृष्ठ पर वापस नहीं जाने पर प्रदर्शित नहीं किया जाएगा?

उत्तर

1

यह सुनिश्चित नहीं है कि यह काम करता है। मैं यह परीक्षण नहीं किया:

//idComponent is the Component whose message you want to clear, e.g. gender 
void clearMessageForComponent (final String idComponent) { 
     if (idComponent != null) { 
      Iterator<FacesMessage> it = FacesContext.getCurrentInstance().getMessages(idComponent); 
      while(it.hasNext()){ 
       ((FacesMessage)it.next()).setDetail(""); 
      } 
     } 
    } 
0

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

यह समझना महत्वपूर्ण है कि ब्राउजर बैक बटन सर्वर से अनुरोध ट्रिगर नहीं करेगा।

1

यह समझना महत्वपूर्ण है कि ब्राउजर बैक बटन सर्वर से अनुरोध ट्रिगर नहीं करेगा।

जो पूरी तरह से सही नहीं है, आधुनिक ब्राउज़र ने अनुरोध किया है कि नेविगेशन के पिछले चरणों में डेटा पोस्ट किया गया था।