दिलचस्प पोस्ट
उनके वर्णमाला क्रम से तार की तुलना करना कम सीएसएस: घोंसले के शिकार के दौरान और ऑपरेटर को अपमानित करना? Rpy2 के लिए अजगर ऑब्जेक्ट को परिवर्तित करना एंड्रॉइड स्टूडियो में क्रॉसवॉक एम्बेड करें मैं गिट में फ़ाइलों को एक पूर्व अनुच्छेद के पथ में कैसे जोड़ूं? Struts2 INPUT परिणाम: यह कैसे काम करता है? रूपांतरण / सत्यापन त्रुटियों को कैसे नियंत्रित किया जाता है? अच्छी तरह से, स्टड :: अनूठे_पीटआर का कस्टम डिलर कैसे काम करता है? प्रत्येक पाश के लिए: वस्तुओं को हटाने के लिए Outlook मेलबॉक्स के माध्यम से पाशन करते समय कुछ आइटम निकल जाते हैं क्या वास्तविक समय वीडियो प्रोसेसिंग के लिए आईओएस 5.0 में कोर इमेज फिल्टर हैं? डायनेमिक रूप से बनाए गए <iframe> को <script> को अभिभावक पृष्ठ में स्क्रिप्ट चलाने क्यों लगता है? डिबग और रिलीज लाइब्रेरी / बाइनरी मिश्रण – खराब अभ्यास? एंड्रॉइड: मैं ग्राफ़ के लिए एचकर्ट एंजिन लाइब्रेरी का उपयोग कर रहा हूं, लेकिन एंड्रॉइड एक्सएमएल के साथ ऐंचैर्टगिन के ग्राफ दृश्य को एकीकृत करने में सक्षम नहीं है? क्यों नहीं "कश्मीर" कथन में वृद्धि हुई "m = ++ i और& ++ j || ++ कश्मीर "जब" ++ i और& ++ j "सही करने के लिए मूल्यांकन करता है? खोज क्वेरी के लिए साफ यूआरएल? रिवर्स इंजीनियरिंग से एनएटीटी कोड को सुरक्षित रखें?

सत्यापन कैसे दबाए बटन पर निर्भर करते हैं?

मैंने फॉर्म बना लिया है और मैं एक मौजूदा तालिका में मौजूदा आइटम दिखाना चाहता हूं, जबकि एक नया बना रहा है। मैं मिलान आइटम दिखाना चाहता हूं क्योंकि फॉर्म भरना है I लेकिन जब मैं फॉर्म को पूरा किए बिना सूची को फ़िल्टर करने की कोशिश करता हूं, तो सत्यापन संदेश दिखाई देते हैं और तालिका अपडेट नहीं होती है।

पता नहीं कि यह संभव है, लेकिन मैं इस तरह से कुछ करने वाला नहीं हूं:

<h:form id="form"> <h:outputText value="Name: "/> <p:inputText value="#{itemsBean.name}" id="name" required="true"/> <br/> <h:outputText value="Description: "/> <p:inputText value="#{itemsBean.description}" id="description" required="true"/> <p:commandButton value="Save" update="form" actionListener="#{itemsBean.save}"/> //validate and save <p:commandButton value="Filter" update="form" actionListener="#{itemsBean.updateItemsList}"/> //don't validate, and update the table. <p:dataTable id="list" value="#{itemsBean.itemsList}" var="item"> <p:column> <h:outputText value="#{item.name}"/> </p:column> <p:column> <h:outputText value="#{item.description}"/> </p:column> </p:dataTable> </h:form> 

मैं जेएसएफ के लिए बहुत नया हूँ और यह मेरा पहला सवाल है मुझे आशा है कि यह कई लोगों और मेरे लिए उपयोगी है।

Solutions Collecting From Web of "सत्यापन कैसे दबाए बटन पर निर्भर करते हैं?"

मैं समझता हूं कि आप name इनपुट फ़ील्ड के आधार पर फ़िल्टर करना चाहते हैं। <p:commandButton> डिफ़ॉल्ट रूप से एक <p:commandButton> अनुरोध भेजता है और इसमें एक process एट्रिब्यूट होता है जिसमें आप निर्दिष्ट कर सकते हैं कि सबमिट के दौरान कौन सा घटक आप संसाधित करना चाहते हैं। आपके विशेष मामले में, आपको केवल name इनपुट फ़ील्ड और वर्तमान बटन पर प्रक्रिया करना चाहिए (ताकि इसकी कार्रवाई को लागू किया जा सके)।

 <p:commandButton process="@this name" ... /> 

process विशेषता घटकों के (सापेक्ष) क्लाइंट आईडी के स्थान से अलग संग्रह ले सकते हैं, जिसमें @this यह वर्तमान घटक को संदर्भित करता है। <p:commandButton> मामले में यह चूक @form (जो वर्तमान फॉर्म और दबाए गए बटन के सभी इनपुट फ़ील्ड को कवर करता है), यही कारण है कि वे सभी को आपके प्रारंभिक प्रयास में मान्य किया गया है। उपरोक्त उदाहरण में, अन्य सभी इनपुट फ़ील्ड पर कार्रवाई नहीं की जाएगी (और इस प्रकार भी मान्य नहीं)।

यदि आप हालांकि सभी क्षेत्रों के लिए required सत्यापन को छोड़ने का इरादा रखते हैं, जब भी प्रश्न में बटन दबाया जाता है, ताकि आप अंततः कई फ़ील्ड को संसाधित कर सकें, जो जरुरी सभी को भरने की आवश्यकता नहीं है, तो आपको required="true" एक सशर्त बजाय जो जांचता है कि बटन दबाया गया है या नहीं उदाहरण के लिए, इसे true मूल्यांकन करें, जब सहेजें बटन दबाया गया है:

 <p:inputText ... required="#{not empty param[save.clientId]}" /> ... <p:inputText ... required="#{not empty param[save.clientId]}" /> ... <p:commandButton binding="#{save}" value="Save" ... /> 

इस तरह इसे required="true" रूप में मान्य नहीं किया जाएगा required="true" जब एक अलग बटन दबाया जाता है। उपरोक्त उदाहरण में चाल यही है कि दबाए गए बटन का नाम (जो मूल रूप से क्लाइंट आईडी है) अनुरोध पैरामीटर के रूप में भेजा गया है और आप अनुरोध पैरामीटर मानचित्र में इसकी उपस्थिति की जांच कर सकते हैं।

यह भी देखें:

  • प्रिफाईफेस प्रक्रिया / अपडेट और जेएसएफ़ को समझना च: अजाक्स निष्पादित / रेंडर विशेषताएँ

मैंने इसे गैर-एजेक्स के साथ प्रस्तुत किया है:

 <p:inputText ... required="#{not empty param.includeInSave1}" /> ... <p:inputText ... required="true" /> ... <p:commandButton value="Save1" ajax="false"> <f:param name="includeInSave1" value="true" /> </p:commandButton> <p:commandButton value="Save2" ajax="false" /> 

पहला इनपुट केवल आवश्यक है कि वह Save1 बटन सबमिट करें।

इसके अतिरिक्त BalusC उत्तर (बहुत उपयोगी और पूर्ण) को मैं जोड़ना चाहता हूं कि जब आप <h:commandButton /> उपयोग करते हैं तो यह मान्य होगा (आवश्यक, कस्टम सत्यापन) <h:form /> में सभी फ़ील्ड जहां कमांड बटन स्थित है, इसलिए जब आपको एक से अधिक आदेश बटन का उपयोग करने की आवश्यकता होती है तो आप यह सोच सकते हैं कि कमांड बटन की कार्रवाइयां सबमिट करने में अनपेक्षित व्यवहार से बचने के लिए अलग-अलग जिम्मेदारियों के लिए अलग <h:form /> अलग <h:form /> का उपयोग करना एक अच्छा अभ्यास है। यह एक बालास्य उत्तर में अच्छी तरह से समझाया गया है: एकाधिक एच: जेएसएफ पृष्ठ में फ़ॉर्म

यदि आपके फ़ॉर्म में मान्यताओं हैं और आप <h:form /> अपडेट नहीं करते हैं या आप संदेश नहीं दिखाते हैं, तो आप सिरदर्द सोच सकते हैं कि <h:commandButton /> आपकी कार्रवाई नहीं कर रहा है, लेकिन संभावना एक सत्यापन समस्या है यह दिखाया नहीं गया है।

सत्यापन को अनदेखा करने के लिए इस तरह अपने फ़िल्टर कमांडबटन को बदलें:

 <p:commandButton value="Filter" update="list" actionListener="#{itemsBean.updateItemsList}" process="@this"/> 

संपादित करें:

अतः पर संबंधित पोस्ट, मुझे लगता है कि यह आपकी समस्या को भी हल करेगा I

JSF 2.0: JSR-303 बीन सत्यापन को कैसे छोड़ें?