2010-10-25 5 views
8

हाल ही में मैंने अपने विकास टोमकैट को 7.0.0 से 7.0.4 तक अपग्रेड किया। मेरे पास चीजें थीं:जावा कीवर्ड को ईएल पहचानकर्ताओं के रूप में अनुमति नहीं है

<c:set var="static" value=".." /> 
<c:set var="class" value=".." /> 

दोनों ने 7.0.0 पर काम किया लेकिन 7.0.4 पर काम करना बंद कर दिया। मैं opened a bug, यह बंद कर दिया गया था, जवाब के साथ:

स्वयं और उस टैग में संकलित होगा।

जावा पहचानकर्ताओं के लिए चेक ईएल प्रसंस्करण में जोड़े गए थे इसलिए मुझे पर संदेह है कि आपके पास पृष्ठ पर कहीं और अवैध ईएल है।

यह स्पष्ट नहीं था, लेकिन मुझे बाद का जवाब नहीं मिला, इसलिए मैंने ईएल स्पेक को देखा। JSP 2.1 (नवीनतम जा रहा है 2.2) के लिए मैंने पाया कि:

अध्याय 1, पेज 21: एक पहचानकर्ता एक जावा पहचानकर्ता होने के लिए विवश है - जैसे, कोई - नहीं, कोई /, आदि

और यह मुझे सबसे ज्यादा मिला है। मैं इस लाइन को इस तरह से पढ़ूंगा कि जावा पहचानकर्ताओं को लागू सिंटैक्स आवश्यकताएं लागू होती हैं, लेकिन आरक्षित शब्द नहीं (चूंकि हंटर class और न ही static ईएल में आरक्षित शब्दों की सूची में दिखाई देता है)। जेएलएस को "जावा पहचानकर्ता" शब्द के लिए संदर्भित नहीं किया गया है (और यह 2.2 spec में कुछ अन्य मामलों के लिए है, जिसे मैंने पूरी तरह से समीक्षा नहीं की थी)

तो, टोमकैट इन नामों को अस्वीकार करने का अधिकार है; वे जिस स्पेस का जिक्र कर रहे हैं उसका बिंदु, और क्या आपको लगता है कि वे इसे सही तरीके से व्याख्या कर रहे हैं।

उत्तर

5

स्पेक का कहना है कि पहचानकर्ता पहचानकर्ताओं तक ही सीमित हैं जो जावा में मान्य होंगे।

static और class दोनों जावा कीवर्ड हैं, और इसलिए संभवतः मान्य पहचानकर्ता नहीं हो सकते हैं। आप नहीं, उदाहरण के लिए, इस लिख सकते हैं:

public int static = 7; 

और इसलिए न static है और न ही class यहाँ या तो वैध पहचानकर्ता हो जाएगा।

3

JSP 2.2 EL specification से:

1,14 सुरक्षित शब्द

निम्नलिखित शब्दों भाषा के लिए आरक्षित हैं और पहचानकर्ता के रूप में इस्तेमाल नहीं किया जाना चाहिए।

 
    and eq  gt  true instanceof 
    or ne  le  false empty 
    not lt  ge  null div  mod 

ध्यान दें कि इन शब्दों से कई अब भाषा में नहीं हैं, लेकिन वे भविष्य में हो सकता है, इसलिए डेवलपर्स इन शब्दों का प्रयोग से बचना चाहिए।

मैं आदि मेरे लिए नहीं मेकअप भावना करता है बिलाव 7.0.4 में यह बदलाव static, class नहीं दिख रहा है,।

+0

yup, ऐसा लगता है कि जेएलएस का संदर्भ स्पेक में जोड़ा गया था। – Bozho

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