2010-03-22 9 views
6

मैं JSF सीख रहा हूँ और इस रेखा के पार पहुंचाजेएसएफ में <h:messages> क्या करता है?

<h:messages layout="table"></h:messages> 
एक नमूना आवेदन में

?

मुझे यकीन नहीं है कि यह लाइन क्या करती है? कोड से लाइन को हटाते समय मुझे कोई त्रुटि नहीं मिलती है, और इसे चलाने में सक्षम हूं और एक ही आउटपुट प्राप्त कर सकता हूं?

+0

लाइन मैं नमूना कोड में पार आया: <एच: संदेश लेआउट = "तालिका"> – bibek

+0

मैंने आपका प्रश्न संपादित कर लिया है। किसी प्रश्न/उत्तर में कोड लिखने के लिए Ctrl + K शॉर्टकट का उपयोग करें। – romaintaz

+0

@romaintaz धन्यवाद – bibek

उत्तर

17

h:messages टैग वर्तमान जेएसएफ व्यू के लिए सभी संदेशों को प्रस्तुत करता है जो h:message (अंत में गायब 'की टिप्पणी करें) टैग द्वारा कवर नहीं हैं। संदेशों को आपकी बैकिंग बीन्स (FacesContext.addMessage) या जेएसएफ द्वारा स्पष्ट रूप से जेनरेट किया जा सकता है।

उदा। यदि आपने आवश्यकतानुसार इनपुट मान चिह्नित किया है और उपयोगकर्ता आवश्यक मान भरने के बिना फॉर्म सबमिट करता है, तो दृश्य में एक त्रुटि संदेश जोड़ा जाएगा। यदि h:message टैग प्रासंगिक घटक से जुड़ा हुआ है, तो संदेश वहां प्रस्तुत किया जाएगा, अन्यथा इसे आपके दृश्य में वैश्विक h:messages टैग द्वारा प्रदान किया जाएगा (यदि कोई हो)।

layout विशेषता निर्दिष्ट करती है कि HTML कोड जेनरेट करने के लिए क्या दिखना चाहिए। table लेआउट (आपके उदाहरण में उपयोग किया गया) संदेशों को प्रदर्शित करने के लिए एक HTML तालिका का उपयोग करता है, जबकि list लेआउट बुलेट सूची (HTML ul टैग) का उपयोग करता है।

आप नहीं अपने ध्यान में रखते हुए एक h:messages टैग और भी कोई h:message टैग, उपयोगकर्ता त्रुटियों के बारे में सूचित नहीं किया जाएगा निर्दिष्ट करते हैं। इसलिए, यह सुनिश्चित करने के लिए कि आपके संदेश उपयोगकर्ता के लिए दृश्यमान हैं, यह सुनिश्चित करने के लिए कि आपके दृश्य के प्रत्येक इनपुट घटक के लिए h:message टैग और h:messages टैग शामिल करना सर्वोत्तम अभ्यास है।

आपको JSF Toolbox पर एक कॉम्पैक्ट जेएसएफ टैग संदर्भ मिलेगा।

+4

"वर्तमान जेएसएफ दृश्य के लिए सभी संदेशों को प्रस्तुत करता है जो कवर नहीं हैं"। मुझे नहीं लगता कि यह पूरी तरह से सही है। जब आप globalOnly = "true" निर्दिष्ट करते हैं तो यह सभी संदेशों को दिखाएगा। –

5

घटक <h:message> और <h:messages> उपयोगकर्ताओं को संदेश प्रदर्शित करने के लिए समर्पित हैं (आमतौर पर त्रुटि संदेश)।

उदाहरण के लिए, जब आपके पास विफल होने वाले फ़ील्ड पर सत्यापन हो (उदाहरण के लिए उपयोगकर्ता ने एक आवश्यक फ़ील्ड भर नहीं दिया है, या केवल एक संख्या में फ़ील्ड इनपुट किया है), तो FacesContext में जोड़ा गया है वस्तु। <h:message> और <h:messages> का उपयोग पृष्ठ में संदेश प्रदर्शित करने के लिए किया जाता है।

घटक <h:messages>FacesContext में निहित सभी संदेशों को प्रदर्शित करेगा, जबकि <h:message> किसी विशिष्ट क्लाइंट आईडी (एक विशिष्ट फ़ील्ड) को समर्पित है। उत्तरार्द्ध उपयोगी है जब आप उदाहरण के लिए किसी फ़ील्ड के करीब संदेश रखना चाहते हैं।

ध्यान दें कि आप संदेश के किसी भी प्रकार जोड़ सकते हैं कि उपयोगकर्ता के लिए प्रदर्शित होगा:

FacesContext.getInstance().addMessage(null, new FacesMessage("The message to display")); 

इस उदाहरण में, पहले पैरामीटर क्षेत्र है कि इस संदेश से संबंधित है के आईडी क्षेत्र (उपयोगी है जब है संदेश एक विशिष्ट फ़ील्ड के लिए एक सत्यापन संदेश है)। null का अर्थ है कि संदेश एक सामान्य जानकारी है (यानी किसी विशेष क्षेत्र से जुड़ा नहीं है)।

आप इस घटक here का एक उदाहरण देख सकते हैं। ध्यान दें कि यह उदाहरण rich:messages का उपयोग करता है जो "मूल" <h:message/> के एक एक्सटेंशन (RichFaces द्वारा प्रदान किया गया) है, लेकिन सिद्धांत समान है।