2011-04-04 7 views
21

मैं जेएसएफ के लिए नया हूं (बस 4 दिन पहले इसके बारे में सीखना शुरू कर दिया) और मैं एच: outputText के उपयोग के बारे में थोड़ा उलझन में हूं। मुझे पता है कि यह एक साधारण टैग है, लेकिन मैंने देखा है कि ज्यादातर उदाहरणों में, यह बहुत सरल आउटपुट (बचने की कोई ज़रूरत नहीं है), गैर-i18n टेक्स्ट आउटपुट के लिए उपयोग किया जाता है। उदाहरण (here से लिया गया) के लिएक्या यह सब कुछ के लिए h: outputText का उपयोग करने का सुझाव दिया गया है?

<h:outputText value="Transport" /> 

जो

Transport 

तो द्वारा प्रतिस्थापित किया जा सकता है, मैं सोच रहा हूँ अगर मैंने कुछ याद कर रहा हूँ या यदि उदाहरण मैंने देखा है की सबसे अधिक overcomplicated हैं पागलपन के बिंदु पर।

उत्तर

41

यदि आप जेएसपी के बजाय फेसलेट 2.x के साथ जेएसएफ 2.x का उपयोग कर रहे हैं, तो दोनों समान रूप से मान्य हैं। और भी, फेसलेट्स एक घटक में इनलाइन सामग्री को स्पष्ट रूप से लपेटता है जैसा कि <h:outputText> द्वारा दर्शाया गया है (दूसरे शब्दों में, यह बच जाएगा!)।

सिर्फ आप escape="false" का उपयोग कर से बचने को अक्षम करना चाहते जब भी चाहते हैं या id, style, onclick, आदि आवंटित करने के लिए प्रोग्राम के रूप में चाहते हैं, या आप (या तो converter या forClass के माध्यम से निहित के माध्यम से स्पष्ट) एक कनवर्टर का उपयोग करना चाहते है, तो होगा <h:outputText> की आवश्यकता है।

जब भी यह आवश्यक नहीं है, तो मैं खुद <h:outputText> का उपयोग नहीं करता हूं। इसके बिना, स्रोत कोड बेहतर पठनीय हो जाता है। आप <h:outputText value="#{bean.text}"> करने के बजाय #{bean.text} जैसे टेम्पलेट टेक्स्ट में ईएल को इनलाइन कर सकते हैं। जेएसएफ 2.0 से पहले, जेएसपी और फेसलेट्स 1.x में, यह संभव नहीं था और इस प्रकार <h:outputText> अनिवार्य है। यदि आपका आईडीई इस पर चेतावनियां देता है, तो यह सबसे अधिक संभावना है जेएसएफ 1.x कॉन्फ़िगर/दिमागी।

+1

ये अच्छी खबर हैं! इसे नहीं पता था। जेएसएफ के लिए एक और बिंदु। धन्यवाद बलुस! –

+0

धन्यवाद बलस। मैं उस टैग को हटा रहा हूं और ऐप असफल नहीं हुआ है, इसलिए मुझे फेसलेट 2 का उपयोग करना होगा (क्योंकि मैं जेएसपी का उपयोग नहीं कर रहा हूं)। जानकारी के लिए धन्यवाद! – Augusto

+0

आपका स्वागत है। कृपया ध्यान दें कि दूसरा जवाब फेसलेट के लिए तकनीकी रूप से गलत है। – BalusC

2

उदाहरण उद्धरण उदाहरण एक्सएचटीएमएल में लिखा गया है - जो एक्सएमएल है। जिस स्थिति में आप इसे रखना चाहते हैं उस पर एक स्टैंडअलोन 'ट्रांसपोर्ट' की अनुमति नहीं दी जा सकती है, ताकि आपको इसे वैध xml में "रूपांतरित" करने की आवश्यकता हो।

आईआईआरसी इसे जेएसएफ 2 में फेसलेट और डिफ़ॉल्ट कहा जाता है, जबकि जेएसएफ 1 में प्रेजेंटेशन कोड जेएसपी टैग के साथ डिफ़ॉल्ट रूप से किया जा सकता है और फेसलेट एक विकल्प था जो कई डेवलपर उपयोग कर रहे थे)।

+0

गोश, आप सही हैं। इस अतिरिक्त प्रश्न के लिए खेद है, लेकिन क्या आपको पता है कि कोई विकल्प है या नहीं? शायद groovy में टेम्पलेट्स लिखने के लिए? यह सिर्फ इतना है कि अतिरिक्त जटिलता आश्चर्यजनक है। – Augusto

0

एच: आउटपुट टेक्स्ट टैग केवल तभी जरूरी है जब आप कुछ रेंडर स्थिति के आधार पर टेक्स्ट प्रस्तुत कर रहे हों। उदाहरण: < एच: outputText value = "परिवहन" rendered = "# {myBean.displayText}"/>। यदि यह एक साधारण आउटपुट स्टेटमेंट है तो टैग का उपयोग करने की कोई आवश्यकता नहीं है; आप बस उपयोग कर सकते हैं: परिवहन

संबंधित मुद्दे

 संबंधित मुद्दे