दिलचस्प पोस्ट
मर्कूरियल सब्रेपो – आप उन्हें कैसे बनाते हैं और वे कैसे काम करते हैं? मैं C ++ में एक साधारण क्यूटी कंसोल अनुप्रयोग कैसे बना सकता हूं? पासवर्ड की शक्ति को मान्य करने के लिए रेगेक्स एंड्रॉइड जीसीएम: अधिक आवेदन के लिए एक ही प्रेषक आईडी जब मेरी खोल स्क्रिप्ट निकल जाए तो मैं पृष्ठभूमि प्रक्रियाओं / नौकरियों को कैसे मारूं? विकास और उत्पादन वातावरण में विभिन्न Web.config का उपयोग करना जावास्क्रिप्ट में "mm / dd / yyyy" प्रारूप के साथ तिथि कैसे मान्य है? मैं जावास्क्रिप्ट में ऑटोरेटेड किडेडाउन इवेंट्स से कैसे बच सकता हूं? .NET प्रतिबिंब की "लागत" क्या है? R: ggplot काम नहीं करता है अगर यह लूप के अंदर है, हालांकि यह इसके बाहर काम करता है कैसे आईएसओ 8601 प्रारूप में जावास्क्रिप्ट में समयक्षेत्र ऑफसेट के साथ दिनांक? ऐडंस लोड करना जब एक्सेल को प्रोग्रामेटिक रूप से इंस्टाल्ट किया जाता है डेटा ट्रांसफर ऑब्जेक्ट्स (डीटीओ) एक विरोधी-पैटर्न क्यों हैं? मैं बाश में कमांड लाइन तर्क कैसे पार्स कर सकता हूँ? एचटीएमएल टेक्स्ट-ओवरफ्लो एल्िप्सिस डिटेक्शन

जेएसएफ प्रबंधित-बीन्स के विभिन्न प्रकार के बीच भेदभाव करना

मैंने हाल ही में नील ग्रिफिन से इस आलेख को जेएसएफ प्रबंधन-बीन्स के विभिन्न प्रकारों के बीच भेदभाव किया है और यह मुझे अपने आवेदन में विभिन्न बीन्स के बीच अंतर के बारे में सोच रहा था। सारांश को तुरंत सारांशित करें:

  • मॉडल प्रबंधित-बीन: इस तरह के प्रबंधन-बीन एमवीसी डिजाइन पैटर्न की "मॉडल" चिंता में भाग लेते हैं। जब आपको "मॉडल" शब्द दिखाई देता है – डेटा को सोचें जेएसएफ मॉडल बीन एक पीओओओ होना चाहिए जो जावाबीन डिज़ाइन पैटर्न का अनुसरण करता है, जो कि गुणक गुणों को समेकित करता है।

  • मैनेजमैंट-बीन का समर्थन: इस तरह के प्रबंधित-बीन एमवीसी डिजाइन पैटर्न की "देखें" चिंता में भाग लेते हैं। बैकिंग-बीन का उद्देश्य यूआई लॉजिक का समर्थन करना है, और एक जेएसएफ दृश्य के साथ 1: 1 रिश्ते या फेसलेट संरचना में जेएसएफ फॉर्म है। यद्यपि इसमें आमतौर पर जुड़ा हुआ गेटर्स / सेटर्स के साथ जावाबीन-शैली वाले गुण हैं, ये अंतर्निहित एप्लिकेशन डेटा मॉडल के दृश्य – दृश्य के गुण हैं जेएसएफ बैकिंग-बीन्स में जेएसएफ एक्शन लेस्टनर और वैल्यू चेंज लिस्टनर मैनेजमेंट भी हो सकते हैं।

  • नियंत्रक प्रबंधित- बीन: इस तरह के प्रबंधित-बीन एमवीसी डिजाइन पैटर्न की "नियंत्रक" की चिंता में भाग लेते हैं। नियंत्रक बीन का उद्देश्य किसी तरह के व्यावसायिक तर्क को निष्पादित करना है और जेएसएफ नेविगेशन-हेन्डलर को एक नेविगेशन परिणाम वापस करना है। जेएसएफ नियंत्रक-सेम आमतौर पर जेएसएफ क्रिया विधियां (और कार्रवाई नहीं करनेवाला तरीके) हैं

  • मैनेजमैंट-बीन का समर्थन: एमवीसी डिजाइन पैटर्न की "देखें" चिंता में एक या अधिक विचारों से इस प्रकार का बीन "समर्थन" करता है। ठेठ उपयोग के मामले में जेएसएफ एच के लिए एक अर्रेलिस्ट की आपूर्ति है: एक से अधिक जेएसएफ दृश्य में दिखाई देने वाली एक ही मेनू ड्रॉप-डाउन सूची। यदि ड्रॉपडाउन सूचियों में डेटा उपयोगकर्ता के लिए विशेष है, तो बीन सत्र के दायरे में रखा जाएगा।

  • उपयोगिता प्रबंधित- बीन: इस प्रकार की बीन एक या अधिक जेएसएफ दृश्यों के लिए कुछ प्रकार की "उपयोगिता" फ़ंक्शन प्रदान करती है। इसका एक अच्छा उदाहरण एक FileUpload बीन हो सकता है जिसे एकाधिक वेब अनुप्रयोगों में पुन: उपयोग किया जा सकता है।

यह मुझे और पिछले कुछ घंटों के लिए समझ में आया और मैं अपने कोड को पुनर्रचना कर रहा हूं और उपयोगकर्ता लॉगिन के संबंध में निम्नलिखित के साथ आया हूं:

AuthenticationController नियंत्रक नियंत्रक प्रबंधित-बीन का एक उदाहरण है यह अनुरोध-स्कॉड किया गया है और यूज़रनेम और पासवर्ड सेट करने के लिए दो गेटर्स और सेटर्स और दो नेविगेशन विधियों, authenticate और लॉग आउट की सुविधा प्रदान करता है, या तो उपयोगकर्ता को अपने निजी क्षेत्र को सफल लॉगिन पर, या लॉग आउट करते समय वापस मुख्य पृष्ठ पर नेविगेट किया जाता है।

UserBean एक समर्थन प्रबंधित-बीन का एक उदाहरण है यह सत्र-स्कॉड है और User वर्ग का एक उदाहरण प्रस्तुत करता है (जो तब मान्य नहीं है जब आप प्रमाणित नहीं हैं) एक गेटर और सेटर के साथ, और कुछ नहीं।

AuthenticationController पास इस उपयोगकर्ता को एक प्रबंधित संपत्ति ( @ManagedProperty(value = "#{userController.user} private User user; ) है। सफल प्रमाणीकरण के बाद, AuthenticationController उस प्रबंधित उपयोगकर्ता को उस उपयोगकर्ता नाम के साथ वास्तविक उपयोगकर्ता इंस्टेंस के साथ सेट करेगा लॉगिन के लिए इस्तेमाल किया

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

क्या इस तरह से चिंताओं के अलग होने के संबंध में जाने का उचित तरीका क्या होगा?

वेब के समाधान से एकत्रित समाधान "जेएसएफ प्रबंधित-बीन्स के विभिन्न प्रकार के बीच भेदभाव करना"

यह एक बहुत ही व्यक्तिपरक प्रश्न है मैं व्यक्तिगत तौर पर उस लेख से असहमत हूं और पता चलता हूं कि यह शुरुआतओं को वास्तव में खराब सलाह दे रहा है।


मॉडल प्रबंधित-बीन: इस तरह के प्रबंधन-बीन एमवीसी डिजाइन पैटर्न की "मॉडल" चिंता में भाग लेते हैं। जब आपको "मॉडल" शब्द दिखाई देता है – डेटा को सोचें जेएसएफ मॉडल बीन एक पीओओओ होना चाहिए जो जावाबीन डिज़ाइन पैटर्न का अनुसरण करता है, जो कि गुणक गुणों को समेकित करता है।

मैं पूरी तरह से ऐसा नहीं करूँगा या इसे प्रबंधित बीन नहीं कहूँगा। बस इसे @ManagedBean की संपत्ति बनाएं उदाहरण के लिए एक डीटीओ या जेपीए @Entity


मैनेजमैंट-बीन का समर्थन: इस तरह के प्रबंधित-बीन एमवीसी डिजाइन पैटर्न की "देखें" चिंता में भाग लेते हैं। बैकिंग-बीन का उद्देश्य यूआई लॉजिक का समर्थन करना है, और एक जेएसएफ दृश्य के साथ 1: 1 रिश्ते या फेसलेट संरचना में जेएसएफ फॉर्म है। यद्यपि इसमें आमतौर पर जुड़ा हुआ गेटर्स / सेटर्स के साथ जावाबीन-शैली वाले गुण हैं, ये अंतर्निहित एप्लिकेशन डेटा मॉडल के दृश्य – दृश्य के गुण हैं जेएसएफ बैकिंग-बीन्स में जेएसएफ एक्शन लेस्टनर और वैल्यू चेंज लिस्टनर मैनेजमेंट भी हो सकते हैं।

इस तरह आप प्रबंधित बीन में इकाई के गुणों को डुप्लिकेट और मानचित्रण करते रहें। त्रि – आयामी यह बेमतलब का लगता है। जैसा कि कहा गया है, बस इकाई को प्रबंधित बीन की एक संपत्ति बनाएं और इनपुट फ़ील्ड को #{authenticator.user.name} स्थान पर #{authenticator.username} जैसे सीधे देखें।


नियंत्रक प्रबंधित- बीन: इस तरह के प्रबंधित-बीन एमवीसी डिजाइन पैटर्न की "नियंत्रक" की चिंता में भाग लेते हैं। नियंत्रक बीन का उद्देश्य किसी तरह के व्यावसायिक तर्क को निष्पादित करना है और जेएसएफ नेविगेशन-हेन्डलर को एक नेविगेशन परिणाम वापस करना है। जेएसएफ नियंत्रक-सेम आमतौर पर जेएसएफ क्रिया विधियां (और कार्रवाई नहीं करनेवाला तरीके) हैं

यह @ViewScoped / @ViewScoped वर्ग का वर्णन बहुत सुंदर है क्या घटना श्रोता के तरीकों की अनुमति है या नहीं, यह इस बात पर निर्भर करता है कि वे उस दृश्य के लिए विशिष्ट हैं जो सेम से जुड़ी हुई है और / या उनके काम के लिए बीन की स्थिति पर निर्भर है। यदि वे हैं, तो वे सेम में हैं यदि नहीं, तो वे किसी भी FacesListener अंतरफलक के एक स्टैंडअलोन कार्यान्वयन होना चाहिए, लेकिन निश्चित रूप से प्रबंधित बीन नहीं।


मैनेजमैंट-बीन का समर्थन: एमवीसी डिजाइन पैटर्न की "देखें" चिंता में एक या अधिक विचारों से इस तरह का बीन "समर्थन करता है"। ठेठ उपयोग के मामले में जेएसएफ एच के लिए एक अर्रेइलिस्ट की आपूर्ति है: एक से अधिक जेएसएफ दृश्य में दिखाई देने वाली एक मेनू मेनू ड्रॉप डाउन सूची। यदि ड्रॉपडाउन सूचियों में डेटा उपयोगकर्ता के लिए विशेष है, तो बीन सत्र के दायरे में रखा जाएगा।

ठीक। आवेदन के लिए विस्तृत डेटा जैसे ड्रॉपडाउन सूचियां सिर्फ एक @ApplicationScoped अनुप्रयोग @ApplicationScoped बीन का प्रयोग @ApplicationScoped और लॉग-इन उपयोगकर्ता जैसे सत्र के विस्तृत डेटा के लिए और इसकी वरीयताओं के लिए सिर्फ एक @SessionScoped


उपयोगिता प्रबंधित- बीन: इस प्रकार की बीन एक या अधिक जेएसएफ दृश्यों के लिए कुछ प्रकार की "उपयोगिता" फ़ंक्शन प्रदान करती है। इसका एक अच्छा उदाहरण एक FileUpload बीन हो सकता है जिसे एकाधिक वेब अनुप्रयोगों में पुन: उपयोग किया जा सकता है।

यह मेरे लिए वास्तव में समझ में नहीं आता है बैकिंग बीन्स आमतौर पर एकल दृश्य से जुड़ी होती हैं। यह <f:actionListener> कार्यान्वयन की तरह बहुत अधिक लगता है जो कि <f:actionListener> कमांड घटकों में आपकी पसंद के लिए उपयोग किया जाता है निश्चित रूप से प्रबंधित बीन नहीं।

सही दृष्टिकोण के ठीक होने के उदाहरणों के लिए, यह भी देखें:

  • हमारे जेएसएफ विकी पृष्ठ में हैलो वर्ल्ड उदाहरण
  • इस उत्तर में "बुकस्टोर सीआरयूडी" का उदाहरण
  • इस जवाब में "मास्टर-विस्तार" उदाहरण
  • JSF सेवा स्तर
  • जेएसएफ 2 में संचार