JSTL अगर समान तार के लिए टैग


90

मुझे अपने JSP पृष्ठ पर एक वस्तु से एक चर मिला है:

<%= ansokanInfo.getPSystem() %>

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

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

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

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

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


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

1
IIRC मैं उन्हें अनुरोध में सेट कर रहा था और समाधान (वर्कअराउंड) BalusC द्वारा बताए गए वेबसफर को अपग्रेड करना था और फिर एक नया संस्करण टैग द्वारा बीन विधियों को लागू कर सकता है। मैं सवाल में मानक वेबस्पेयर का उपयोग कर रहा था और जेएसपी और जेएसटीएल तरीकों को चलाने से पहले कुछ संस्करण। कृपया मेरे अन्य प्रश्न का पता लगाएं, जहां BalusC हमें बताता है कि मैं एक websphere संस्करण का उपयोग कर रहा था जिसे विधियों को लागू करने में सक्षम होने के लिए एक नए संस्करण की आवश्यकता थी।
निकल्स आर।

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

@SanKrish मैं अब JSP का उपयोग नहीं करता। मुझे आशा है कि यह आपके लिए काम करता है और यह ऐप सर्वर के नए संस्करणों के लिए अपडेट किया गया था।
निकल्स आर।

जवाबों:


145

प्रयत्न:

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

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


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

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

1
आप कई तार कैसे करेंगे? वहाँ से एक बेहतर तरीका हो गया है<c:if test = "${ansokanInfo.PSystem == 'NAT' || ansokanInfo.PSystem == 'CAT'}">
डिलन


16

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

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

इस प्रकार "FooBah" "fooBah" और "X" "x" बन जाता है, लेकिन "URL" "URL" के रूप में बना रहता है।

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

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

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

5

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

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

<c:if test="${ ansokanInfo.pSystem  == 'NAT'}"> tataa </c:if>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.