2012-02-23 47 views
14

मैं वर्तमान में struts2 के साथ काम कर रहा हूं, और मुझे समझ में नहीं आता कि ${var}, #{var}, और %{var} के बीच अंतर क्या है, वे अलग-अलग स्कॉप्स हैं? हैं? (कोष्ठकों के बिना) किसी भी विचार

<s:select label="Year" 
     id="%{param.name}" 
     list="#{'2010':'2010','2011':'2011','2012':'2012','2013':'2013','2014':'2014', '2015':'2015'}" 
     value="%{currentYear}" 
     required="true" 
/> 
यहाँ

ऐसा लगता है कि यह एक साहचर्य सरणी है, लेकिन वहाँ #var के रूप में दूसरी बार मैं इसे देखा है है:

मैं # का एक उदाहरण पाया?

+2

संबंधित: (http [JSP ईएल, JSF ईएल और एकीकृत EL बीच अंतर]: //stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el) (यह केवल स्ट्रूट-विशिष्ट ओजीएनएल को कवर नहीं करता है) – BalusC

उत्तर

18
  • ${} - मानक जेएसपी ईएल नोटेशन।
  • #{} - मानक यूईएल नोटेशन; कभी इसका इस्तेमाल नहीं किया, काम कर सकते हैं।
  • %{} - ओजीएनएल अभिव्यक्ति नोटेशन।

जेएसपी ईएल नोटेशन काम करता है क्योंकि एक अनुरोध रैपर है जो पहले लुकअप के लिए मूल्य स्टैक को रोक देगा, फिर सामान्य जेएसपी मूल्यांकन पर वापस आ जाएगा यदि मूल्य स्टैक पर कोई मूल्य नहीं मिलता है।

ओजीएनएल अभिव्यक्ति नोटेशन केवल एस 2 टैग के भीतर मान्य है। जब भी आप ओजीएनएल अभिव्यक्ति का मूल्यांकन कर रहे हों तो आईएमओ का उपयोग किया जाना चाहिए, हालांकि यह अक्सर वैकल्पिक होता है। जब यह वैकल्पिक है, हालांकि कुछ बकवास शूट है। यह अक्सर होता है, हमेशा नहीं। इसका उपयोग करने के लिए सबसे अच्छा और स्पष्ट और संवादात्मक होना।

आप # के बारे में चर मांग रहा है, #session आदि # की तरह मूल्य ढेर "मानचित्र" भाग में है पर एक मूल्य के हल करने के लिए प्रयोग किया जाता है। मैं वैल्यू स्टैक को संयोजन स्टैक और स्कोप के रूप में देखता हूं: यदि किसी ऑब्जेक्ट को स्टैक पर धक्का दिया गया है, तो आपको # की आवश्यकता नहीं है। यदि कोई मान बनाया गया है, तो आपको # की आवश्यकता है।

उदाहरण के लिए, यदि आप <s:set> का प्रयोग कर एक चर बनाने के लिए, आप इसे एक # उपसर्ग का उपयोग करके प्रवेश करना होगा, जैसे:

<s:set var="foo" value="'plugh'"/> 
<s:property value="#foo"/> 
1

बस एक एक और नोट:

आप अपने में $ उपयोग कर सकते हैं कार्रवाई उदाहरण के लिए अन्य तरीकों से गुजरने से पहले ओजीएनएल के खिलाफ अपने पैरामीटर का मूल्यांकन करने के लिए स्ट्रेट्स पूछने के लिए:

उपयोग करना एक कस्टम सत्यापनकर्ता

Struts 2 - reusing Custom Expression Validator

या

बदलें डाउनलोड फ़ाइल नाम

Struts 2 Download - How to configure the file name dynamically?

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