2013-01-23 45 views
36

में टर्नरी ऑपरेटर जेएसटीएल का निम्नलिखित टैग एक अनुरोध स्कोप में एक चर को मान सेट करने के लिए उपयोग किया जा सकता है।जेएसटीएल/ईएल

<c:set var="value" scope="request" value="someValue"/> 

मैं सशर्त जाँच करना चाहते हैं, यदि चर value स्थापित किया जा रहा खाली है या नहीं और उसके अनुसार निम्नलिखित की तरह कुछ परिणाम प्रदर्शित करते हैं, <c:when>...</c:when> का उपयोग कर।

<c:choose> 
    <c:when test="${not empty value}"> 
     <c:out default="None" value="${value}"/> 
    </c:when> 
    <c:otherwise> 
     <c:out default="None" value="None"/> 
    </c:otherwise> 
</c:choose> 

मैं की तरह एक त्रिगुट अभिव्यक्ति का उपयोग कर कोड की पंक्ति को कम करना चाहते,

<c:out default="None" value="${not empty value ? value : 'None'}"/> 

यह मूल्यांकन किया है के रूप में यह वास्तव में इसका मतलब है लेकिन अगर मैं की तरह भाव के आदेश की अदला-बदली,

<c:out default="None" value="${empty value ? 'None' : value}"/> 

तो यह एक वाक्यविन्यास त्रुटि इंगित करता है,

"$ {रिक्त मान 'कोई नहीं': मूल्य}" { 'कोई नहीं' खाली मूल्य: मूल्य?} $:

तो क्यों अमान्य अभिव्यक्ति (रों) शामिल हैं: javax.el.ELException: पार्स करने में त्रुटि क्या ऐसा होता है?


मैं JSTL 1.1 पुस्तकालय का उपयोग कर रहा है और निम्नलिखित taglib शामिल किया गया है,

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
+0

मैंने आपके कोड की प्रतिलिपि बनाई और चिपकाया और यह बिना किसी त्रुटि के मेरे लिए काम करता है। – rickz

+0

@rickz - यह ** ** जेएसटीएल के पुस्तकालय संस्करण के साथ समस्या हो सकती है जिसका मैं उपयोग कर रहा हूं। आप किस लाइब्रेरी का उपयोग कर रहे हैं? – Tiny

+0

मैं 1.2 का उपयोग कर रहा हूँ। – rickz

उत्तर

43

मैं निम्नलिखित पेज बिलाव 5.59 में, JSP 2.0 और JSTL 1.1 का परीक्षण किया। यह बिना किसी त्रुटि के भाग गया।

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<c:set var="value" scope="request" value="someValue"/> 
<c:out default="None" escapeXml="true" value="${not empty value ? value : 'None'}" /> 
<c:out default="None" escapeXml="true" value="${empty value ? 'None' : value}" /> 
<c:set var="value" scope="request" value="" /> 
<br/> 
<c:out default="None" escapeXml="true" value="${not empty value ? value : 'None'}" /> 
<c:out default="None" escapeXml="true" value="${empty value ? 'None' : value}" /> 
+1

मैंने हाल ही में डाउनलोड किया है [नेटबीन 7.2.1] (http://netbeans.org/downloads/) और [jdk 7] (http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads -1880260.html) और पूरे एप्लिकेशन को फिर से कॉन्फ़िगर किया जो मैं फिर से स्क्रैच से काम कर रहा हूं। नेटबीन 7.2.1 में अपाचे टॉमकैट 7.0.27.0 है (पहले यह नेटबीन 6.9.1 के साथ 6.0.26.0 था) जो सर्वलेट 3.0 का समर्थन करता है (पहले यह 2.5 था) जहां प्रश्न में समस्या गायब हो गई। मैंने जेएसटीएल लाइब्रेरी नहीं बदली। यह अभी भी जेएसटीएल 1.1 पहले है। – Tiny