व्यक्तिगत रूप से, मैं विकल्प # 2 का उपयोग करूंगा। जबकि मुझे पता है कि ईएल का उपयोग करके समस्या को हल करना और कार्यों या यूआई का उपयोग करके एक्सएचटीएमएल दस्तावेजों में कुछ बिट पुन: उपयोग करना संभव है: यह वास्तव में जावा बीन कार्यान्वयन की पोर्टेबिलिटी, स्थिरता और परीक्षण की कमी लगती है।
यदि कोई डेवलपर EL और Java दोनों में धाराप्रवाह है और दोनों xHTML और Java सेम का मालिक है, तो EL को किसी भी आकार के साथ सशर्त मूल्यांकन करने के लिए बहुत अधिक समझ में नहीं आता है> 1।
बस जावा पक्ष पर लागू करने के लिए बहुत अधिक लाभ प्रतीत होते हैं:
- आईडीई + कंपाइलर पर झुकाव की क्षमता
- स्थिरांक या एनम ("डॉग" और "बार्क" के लिए) का उपयोग करें, संभावना है कि वे तुलना के लिए कोड में कहीं और उपयोग कर रहे हैं ... यदि स्ट्रिंग मान बदलता है, तो यह वास्तविक रूप से मज़ेदार है कि इसे मैन्युअल रूप से हर जगह बदलने के लिए। कोड आधार
- उपयुक्त डेटा के साथ प्रश्न में पृष्ठ पर नेविगेट करने के बजाय मैं यूनिट परीक्षणों का उपयोग करके तर्क का उपयोग कर सकता हूं
विकल्प 1 के पक्ष में मैंने मुख्य दलीलों में से एक (स्टैक के बाहर) सुनी है:
"जब आप इस तर्क को दृष्टि में रखते हैं तो घटक को प्रस्तुत करना बहुत आसान होता है।"
मैंने पाया है कि यह जीवन के प्रारंभिक चरण में एक आवेदन के लिए मामला हो सकता है जहां यह हल्का वजन और कम जटिल है। हालाँकि इस अभ्यास को बड़े पैमाने पर लागू करना और एक छोटे से अनुप्रयोग के रूप में परिपक्व होने पर यह चूहों के घोंसले का कारण बन सकता है और बनाए रखने के लिए एक बुरा सपना बन सकता है। यहाँ कुछ उदाहरण हैं जो मैंने जंगल में देखे हैं:
<h:outputText value="grrr"
render="#{animal.type == 'dog' or animal.type == 'cat' or animal.type == 'horse'
or animal.type == 'pony' or animal.type == 'mule' or animal.type == 'lion'
or animal.type == 'tiger' or (animal.type == 'bird'
and animal.subType == 'macaw') or .... continue this for another line or two}"
/>
या मेरे पसंदीदा, रेंडर शर्तों के साथ कई घटकों का उपयोग करते हुए जो प्रदर्शित किए जा सकने वाले विभिन्न मूल्यों का प्रतिनिधित्व करने के लिए एक दूसरे के अनन्य हैं:
<h:outputText value="grr" render="#{theMonstrosityFromPreviousExample} />
<h:outputText value="cry"
render="#{animal.type == 'human' and animal.subType == 'baby'}" />
<h:outputText value="yo"
render="#{animal.type == 'human' and animal.subType == 'teenager'}" />
<h:outputText value="hello"
render="#{animal.type == 'human' and animal.subType == 'adult'}"/>
एक बार में अधिकतम 4 पाठ प्रदर्शित किए जा सकते हैं? पहली नज़र में आप यह नहीं बता सकते हैं कि प्रत्येक स्थिति की जाँच आवश्यक होगी। एक साइड नोट के रूप में मुझे लगता है कि यह उदाहरण भी खराब डिजाइन है, क्योंकि इन्हें एसी में रखा जा सकता है: चुनें ... लेकिन मैंने इसे पहले भी देखा है।
दिन के अंत में यह अभी भी सैद्धांतिक रूप से 'व्यू' लॉजिक है क्योंकि यह निर्धारित करता है कि वास्तव में क्या प्रदर्शित होता है इसलिए एक वैचारिक तर्क है जो इसे एक्सएचटीएमएल में रहना चाहिए। मुझे जो समस्या मिली है, वह यह है कि व्यू टेम्प्लेट में इस तरह के तर्क सहित लेआउट को लंबे समय में समझने में बहुत मुश्किल हो सकती है और मुझे अभी तक यह देखना है कि समस्या को हल करने का यह तरीका जावा का उपयोग करने पर कोई वास्तविक लाभ रखता है सेम कार्यान्वयन।
barking animals
मैं उस पद्धति को कॉल करूंगा, क्योंकि यह पहले से मौजूद है। यदि इसका एक व्यू लॉजिक आप कई साइटों पर उपयोग करते हैं, तो आप इससे एक el फंक्शन बना सकते हैं।