2012-04-17 16 views
71

मैं अपने JSP पेज पर एक वस्तु से एक चर मिल गया है:JSTL अगर बराबर स्ट्रिंग्स के लिए टैग

<%= ansokanInfo.getPSystem() %>

चर का मान जो सही है नेट है और मैं निश्चित पृष्ठ तत्वों को लागू करना चाहते हैं इस मूल्य के लिए। मामले को जानने के लिए मैं टैग का उपयोग कैसे करूं? मैंने

<c:if test = "${ansokanInfo.getPSystem() == 'NAT'}">  
    process 
</c:if> 

पर कुछ कोशिश की लेकिन उपर्युक्त कुछ भी प्रदर्शित नहीं करता है। मैं इसे कैसे करूं? या मैं स्क्रिप्टलेट्स का उपयोग भी कर सकता हूं यानी

<% if (ansokanInfo.getPSystem().equals("NAT"){ %> 
process 
<% } %> 

किसी भी उत्तर या टिप्पणी के लिए धन्यवाद।

+1

आप विस्तृत कृपया 'getPSystem()' और 'ansokanInfo'? क्या आप उन्हें अनुरोध में सेट करते हैं या 'आयात' के माध्यम से उन्हें एक्सेस करते हैं? –

+1

आईआईआरसी मैं उन्हें अनुरोध में स्थापित कर रहा था और समाधान (वर्कअराउंड) बैलससी द्वारा बताए गए वेबस्पेयर को अपग्रेड करना था और फिर एक नया संस्करण टैग द्वारा बीन विधियों का आह्वान कर सकता है। मैं सवाल में मानक websphere का उपयोग कर रहा था और jsp और jstl विधियों को चलाने से पहले कुछ संस्करण। कृपया [मेरा अन्य प्रश्न] ढूंढें (http://stackoverflow.com/questions/10742174/el-equivalent-of-object-methodparameter-in-was-8) जहां बलुस हमें बताता है कि मैं एक वेबस्पेयर संस्करण का उपयोग कर रहा था जिसके लिए आवश्यक था विधियों का आह्वान करने में सक्षम होने के लिए नया संस्करण। –

+1

तो अब आपने अपना ऐप सर्वर 8 पर अपग्रेड किया है? और क्या वह समाधान विफल रहता है? –

उत्तर

119

प्रयास करें:

<c:if test = "${ansokanInfo.PSystem == 'NAT'}"> 

JSP/Servet 2.4 (मुझे लगता है कि संस्करण संख्या है) विधि ईएल और केवल समर्थन संपत्तियों में कॉल का समर्थन नहीं करता। नवीनतम सर्वलेट कंटेनर समर्थन विधि कॉल (यानी टोमकैट 7) करते हैं।

+1

मैंने जोर्न के जवाब के आधार पर अपना उत्तर अपडेट किया। उसे टोपी की युक्ति। –

+2

मैंने जेएसपी (एक्स) पर छोड़ दिया है। मैं या तो मूंछ (https://github.com/samskivert/jmustache) या अपनी खुद की टेम्पलेटिंग भाषा JATL (http://code.google.com/p/jatl/) का उपयोग करता हूं। –

+0

आप एकाधिक तार कैसे करेंगे? '' – Patience

5

आप scriptlets उपयोग कर सकते हैं, हालांकि, इस न जाने का रास्ता है। आजकल इन जेएसपी फाइलों में इनलाइन स्क्रिप्लेट या जावा कोड को बुरी आदत माना जाता है।

आपको जेएसटीएल पर थोड़ा और पढ़ना चाहिए। यदि ansokanInfo ऑब्जेक्ट आपके अनुरोध या सत्र स्कोप में है, तो ऑब्जेक्ट (toString() विधि) को प्रिंट करना: $ {ansokanInfo} आपको कुछ मूल जानकारी दे सकता है। $ {ansokanInfo.pSystem} ऑब्जेक्ट गेटटर विधि को कॉल करना चाहिए। यदि यह सब काम करता है, तो आप इस का उपयोग कर सकते हैं:

<c:if test="${ ansokanInfo.pSystem == 'NAT'}"> tataa </c:if> 
16

मुझे लगता है कि अन्य उत्तर एक महत्वपूर्ण ईएल अभिव्यक्ति में उपयोग करने के लिए संपत्ति के बारे में विस्तार से नाम याद आती है। संपत्ति के नाम करने के लिए विधि के नाम से परिवर्तित करने के लिए नियम 'Introspector.decpitalize` में निर्दिष्ट कर रहे हैं जो जावा सेम मानक का हिस्सा है:

यह सामान्य रूप से लोअर केस में अपर केस से पहले वर्ण परिवर्तित करने का मतलब है, लेकिन (असामान्य) में विशेष मामला जब एक से अधिक वर्ण होते हैं और पहले और दूसरे अक्षर ऊपरी मामले होते हैं, तो हम इसे अकेला छोड़ देते हैं।

इस प्रकार "फूबा" बन जाता है "फूबाह" और "एक्स" "एक्स" बन जाता है, लेकिन "यूआरएल" "यूआरएल" के रूप में रहता है।

तो अपने मामले में JSTL कोड निम्नलिखित की तरह दिखना चाहिए, ध्यान दें राजधानी 'पी':

<c:if test = "${ansokanInfo.PSystem == 'NAT'}"> 
+2

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