यह शायद एक प्रकार का वास्तुशिल्प प्रश्न है, लेकिन फिर भी इसे 'सर्वोत्तम अभ्यास समाधान' या स्वीकार्य मानक होना चाहिए।जेएसएफ सत्र का उपयोग करके स्थिर पदानुक्रमित डेटा का प्रतिनिधित्व करने के लिए प्रबंधित बीन स्कॉप्ड
मैं किसी प्रकार के स्थिर डेटा के बारे में बात कर रहा हूं जिसे साइट पर प्रदर्शित करने की आवश्यकता है, जैसे उत्पादों की सूची, मेनू और मेनू आइटमों की सूची, ब्रेडक्रंब ब्लॉक आदि की सूची आदि। यह विकल्प किसी भी मानक सीएमएस, I का उपयोग करते समय उपलब्ध है। मान लीजिए।
लेकिन मैं इस मुद्दे के लिए एक शुद्ध जेएसएफ समाधान का उपयोग करना चाहता हूं।
तो, सवाल करने के लिए वापस पाने के लिए, मेरे विस्तारण निम्नलिखित सिद्धांतों पर स्टेम:
डाटा facelets में hardcoded नहीं किया जाना चाहिए, इसलिए मैं डेटाबेस का उपयोग निम्नलिखित में की तरह मान धारण करने के लिए, डाटाबेस लिपि (मेरे मामले में MYSQL):
CREATE TABLE CatalogueGroup ( CatalogueGroupName VARCHAR(100) NOT NULL PRIMARY KEY, URLPath VARCHAR(200) NOT NULL, ParentGroupName VARCHAR(100) DEFAULT NULL, FOREIGN KEY (ParentGroupName) REFERENCES CatalogueGroup(CatalogueGroupName) ON UPDATE CASCADE ON DELETE SET NULL )ENGINE=InnoDB DEFAULT CHARSET=utf8;
मैं तो
की तरह एक @ManagedBean में आयोजित होने वाले इकाई वर्ग का उपयोग करें और एक दृश्य में प्रदर्शित करने के लिए, चाहते हैं
उपर्युक्त सेटअप काम करता है, लेकिन ऐसा लगता है कि यह एक अजीब है।
- क्या इस तरह की एक सूची सेम की स्थापना के लिए एक उचित तरीका है:: तो, मैं JSF समुदाय के लिए निम्न खुला, 'सबसे अच्छा अभ्यास के सवालों को उठाने के लिए चाहते हैं
- एक
@SessionScope
सेम कि एक बार लोड किया जाएगा और प्रत्येक दृश्य या - ए
@RequestScoped
बीन जो प्रत्येक पृष्ठ डिस्प्ले पर डेटाबेस तक पहुंच जाएगा।
- एक
- वहाँ facelet ध्यान में रखते हुए सेटअप पुनरावर्ती कार्यों के लिए एक रास्ता है, या मैं और अधिक उजागर सूची नेस्टिंग स्तर को सीमित करने, कहते हैं, 2 या 3
- मैं संशोधित सूची के कुछ प्रकार प्रदर्शित करना चाहते हैं चाहिए, उपयोगकर्ताओं द्वारा लॉग इन करने के लिए समूह, उनकी भूमिका (डेटाबेस तालिका में जोड़ा गया कॉलम) के आधार पर और कोई उपयोगकर्ता लॉग इन करते समय मूल कैटलॉग प्रदर्शित करता है। इसके अतिरिक्त, मैं कभी-कभी कैटलॉग में कुछ नए समूह डालना चाहता हूं और उपयोगकर्ताओं को फिर से- लॉग इन करें, लेकिन एक बार में उचित डेटा को फिर से चलाएं:
- क्या मैं व्यवसाय परत में समूह फ़िल्टर कर सकता हूं और एक फ़िल्टर किए गए कैटलॉग समूह को बीन में दिखा सकता हूं, या मैं पूरी सूची लोड करूंगा और इसकी सी को सीमित कर दूंगा rendered = झूठ के साथ विचारों में hildren;
- सत्र में पूरे कैटलॉग का खुलासा करने का एक उचित तरीका है;
- क्या सभी मौजूदा कैटलॉग बीन में नई डेटाबेस प्रविष्टियों को जोड़ने के लिए संशोधनों की घटनाओं को भेजना संभव है, सर्वर पर सक्रिय अपने गुणों (कैटलॉग समूह) को रीफ्रेश करने के लिए मजबूर करना या इस कार्यक्षमता को प्राप्त करने के लिए मुझे केवल
@RequestScoped
बीन का उपयोग करने की आवश्यकता है; - अनुरोध स्कॉप्ड बीन का उपयोग करने के मामले में एकमात्र विकल्प होगा डेटा को प्राप्त करने के लिए डेटाबेस तक पहुंचना बुद्धिमान होगा, जो शायद ही कभी बदलता है या चीजों को करने का एक बेहतर तरीका है;
- जब उपयोगकर्ता लॉग इन करता है (और लॉग आउट करता है) पहले से ही सत्र स्कॉप्ड कैटलॉग का एक उदाहरण है, इसे रीफ्रेश कैसे करें: क्या मुझे इसे क्रिया/क्रिया श्रोता में मैन्युअल रूप से करने की आवश्यकता है या मुझे सत्र को अमान्य करने या कुछ और उचित करने की आवश्यकता है स्थिति के लिए।