2012-01-09 43 views
65

मैं जेएसएफ 2 में प्रोग्रामिंग कर रहा हूं और नेटबीन #{} के साथ कई पेज बनाता है जिसमें एक अभिव्यक्ति है।

हालांकि कभी-कभी वेब पर मुझे एक ही चीज़ के लिए ${} मिला!

क्या कोई अंतर है? वे क्या हैं?

Google # और $ अक्षरों को अनदेखा करता है, इसलिए इसे खोजना मुश्किल हो जाता है।

+5

([JSP ईएल, JSF ईएल और एकीकृत EL बीच अंतर] के संभावित डुप्लिकेट http://stackoverflow.com/questions/4812755/difference-between-jsp-el- JSF-अल-और-एकीकृत-अल)। उपरोक्त हमारे ईएल विकी पेज में भी उल्लेख किया गया है (प्रश्न के नीचे अपने माउस को '[el] 'टैग से ऊपर रखें और काले पॉपबॉक्स में * जानकारी * लिंक पर क्लिक करें)। – BalusC

उत्तर

72

# {} स्थगित अभिव्यक्तियों के लिए हैं (स्थगित अभिव्यक्ति पृष्ठ के जीवन चक्र के आधार पर हल की गई हैं) और इसका उपयोग बीन से या एक विधि कॉल करने या लिखने के लिए किया जा सकता है। $ {} तत्काल रिज़ॉल्यूशन के लिए अभिव्यक्तियां हैं, जैसे ही उन्हें सामना करना पड़ता है, वे हल हो जाते हैं। वे केवल पढ़ने के लिए हैं। आप यहां और अधिक पढ़ सकते हैं: http://docs.oracle.com/javaee/6/tutorial/doc/bnahr.html

+0

@ fortunato: आपके उत्तर के लिए धन्यवाद! – Filippo1980

+0

सटीक रूप से समझाया गया, अच्छा जवाब – thodorisbais

7

यह एक अच्छा सवाल है!

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

+0

@ ओस्कर लोपेज़: धन्यवाद! – Filippo1980

4

JSF ईएल एक हैश (#) जहां JSP ईएल jsf1.2 दोनों वाक्यविन्यास

एकीकृत किया गया में डॉलर चिह्न ($) का उपयोग करता है का उपयोग करता है
+0

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

+0

http://stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el http://www.artima.com/ लिजवा/लेख/jsf_jspP.html –

+0

+1 – dakait

9

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

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

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

+1

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

4

जावा प्रलेखन निम्नलिखित विवरण देता है:

$ {customer.name}
# {customer.name}

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

जावासेवर फेस टेक्नोलॉजी के मामले में, पृष्ठ के प्रारंभिक अनुरोध के दौरान बाद वाले टैग की अभिव्यक्ति का तुरंत मूल्यांकन किया जाता है। इस मामले में, यह अभिव्यक्ति एक रैल्यू अभिव्यक्ति के रूप में कार्य करती है। पोस्टबैक अनुरोध के दौरान, इस अभिव्यक्ति का उपयोग उपयोगकर्ता इनपुट के साथ नाम संपत्ति के मान को सेट करने के लिए किया जा सकता है। इस मामले में, अभिव्यक्ति एक lvalue अभिव्यक्ति के रूप में कार्य करता है।

और पढ़ें यहाँ: value expressions

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