$ {} और # {} के बीच अंतर क्या हैं?


80

मैं JSF2 में प्रोग्रामिंग कर रहा हूं और NetBeans कई पेज बनाता #{}है जिसमें एक अभिव्यक्ति होती है। हालाँकि कभी-कभी मैं वेब पर ${}एक ही चीज़ के लिए मिला !

क्या कोई मतभेद हैं? वे क्या हैं?

जवाबों:


91
  • #{}के लिए कर रहे हैं आस्थगित भाव (वे पेज के जीवन चक्र के आधार पर हल कर रहे हैं) और पढ़ने के लिए या से या एक के लिए लिखने के लिए इस्तेमाल किया जा सकता सेम या एक बनाने के लिए विधि कॉल
  • ${}तत्काल समाधान के लिए भाव हैं , जैसे ही उनका सामना किया जाता है वे हल हो जाते हैं। वे पढ़े-लिखे ही हैं।

आप यहाँ और अधिक पढ़ सकते हैं: http://docs.oracle.com/javaee/6/tutorial/doc/bnahr.html


12

"जावा सर्वर फेस डॉलर पाउंड" के लिए एक Google खोज ने JBoss से निम्न परिणाम दिया अभिव्यक्ति भाषा के अक्सर पूछे जाने वाले प्रश्न :

कुछ भाव पाउंड से क्यों शुरू होते हैं और अन्य डॉलर के संकेत से शुरू होते हैं?

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


1
@ जीन होमिनल: आपने अपने उत्तर के लिए धन्यवाद दिया ... जैसा कि मैंने लिखा था कि मैंने $ और # का उपयोग करके खोज करने की कोशिश की थी और यह काम नहीं किया ... मुझे पता नहीं था कि आप # "पाउंड" कहते हैं! तो इस जानकारी के लिए भी धन्यवाद!
फिलिप्पो 1980

9

यह एक अच्छा सवाल है! मैंने इसे एक बार और आप की तरह सामना किया, मुझे उत्तर खोजने में बहुत परेशानी हुई ... जब तक कि मैं प्रलेखन के इस टुकड़े पर ठोकर नहीं खा गया :

एकीकृत ईएल की एक प्रमुख विशेषता अभिव्यक्ति के तत्काल और आस्थगित मूल्यांकन दोनों के लिए इसका समर्थन है। तत्काल मूल्यांकन का अर्थ है कि JSP इंजन अभिव्यक्ति का मूल्यांकन करता है और जब पृष्ठ पहली बार प्रस्तुत किया जाता है तो तुरंत परिणाम लौटाता है। आस्थगित मूल्यांकन का अर्थ है कि अभिव्यक्ति की भाषा का उपयोग करने वाली तकनीक अपनी स्वयं की मशीनरी का उपयोग कर कुछ समय बाद पृष्ठ के जीवन चक्र के दौरान अभिव्यक्ति का मूल्यांकन कर सकती है, जब भी ऐसा करने के लिए उपयुक्त हो। जिन भावों का मूल्यांकन किया जाता है वे $ {} वाक्य रचना का तुरंत उपयोग करते हैं, जिसे JSP 2.0 अभिव्यक्ति भाषा के साथ पेश किया गया था। ऐसे मूल्यांकन जिनके मूल्यांकन को स्थगित कर दिया गया है वे # {} वाक्य रचना का उपयोग करते हैं, जिसे JavaServer Faces तकनीक द्वारा पेश किया गया था।


5

JSF EL एक हैश (#) का उपयोग करता है जहाँ JSP EL jsf1.2 में डॉलर चिन्ह ($) का उपयोग करता है।


क्या आप कुछ दस्तावेज प्रदान कर सकते हैं जो इस एकीकरण का समर्थन करते हैं
Dakait


5

जावा प्रलेखन निम्नलिखित स्पष्टीकरण देता है:

$ {customer.name}
# {customer.name} JavaServer Faces तकनीक के मामले में, पृष्ठ के लिए प्रारंभिक अनुरोध के दौरान बाद वाले टैग की अभिव्यक्ति का तुरंत मूल्यांकन किया जाता है। इस मामले में, यह अभिव्यक्ति एक लयबद्ध अभिव्यक्ति के रूप में कार्य करती है। पोस्टबैक अनुरोध के दौरान, इस अभिव्यक्ति का उपयोग उपयोगकर्ता इनपुट के साथ नाम संपत्ति के मूल्य को निर्धारित करने के लिए किया जा सकता है। इस मामले में, अभिव्यक्ति एक अंतराल अभिव्यक्ति के रूप में कार्य करती है।

पूर्व तत्काल मूल्यांकन सिंटैक्स का उपयोग करता है, जबकि बाद वाला आस्थगित मूल्यांकन सिंटैक्स का उपयोग करता है। पहली अभिव्यक्ति नाम की संपत्ति तक पहुंचती है, इसका मूल्य मिलता है, प्रतिक्रिया के लिए मूल्य जोड़ता है, और पृष्ठ पर प्रदान किया जाता है। दूसरी अभिव्यक्ति के साथ भी ऐसा ही हो सकता है। हालाँकि, यदि टैग इस तकनीक का उपयोग करता है, तो टैग हैंडलर बाद में पृष्ठ जीवनचक्र में इस अभिव्यक्ति के मूल्यांकन को स्थगित कर सकता है।

यहाँ और पढ़ें: मूल्य अभिव्यक्तियाँ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.