2011-06-09 9 views
17

स्ट्रिंग ONLY $4.67 के हिस्से के रूप में प्रिंट करने के लिए promoPrice चर कैसे प्राप्त करें?ईएल में एक स्ट्रिंग को कैसे जोड़ना है?

<c:set var="promoPrice" value="4.67" /> 
<p>${(promoPrice != null) ? "ONLY $${promoPrice}" : "FREE"}</p> 
+0

क्या मेरा सुझाव आपकी समस्या का समाधान करता है? यानी कोट्स के बाहर $ प्रोमोप्रिस को स्थानांतरित करें। –

+0

@rationalSpring no, यह काम नहीं करता है। मुझे लगता है कि आप उस तरह चर को पारित नहीं कर सकते हैं। हालांकि धन्यवाद। – alquatoun

उत्तर

29

आप पहले से ही ईएल 3.0 पर हैं (जावा EE 7; WildFly, बिलाव 8, ग्लासफिश 4, आदि), तो आप इस के लिए नए += ऑपरेटर इस्तेमाल कर सकते हैं:

<p>${not empty promoPrice ? 'ONLY $' += promoPrice : 'FREE'}</p> 

हैं हालांकि आप अभी तक ईएल 3.0 पर नहीं हैं, फिर ईएल 2.2 (जावा ईई 7; जेबॉस एएस 6/7, टॉमकैट 7, ग्लासफ़िश 3, आदि) का उपयोग तर्कों के साथ सीधे तरीकों का आह्वान करने की क्षमता, जिसे आप String#concat() पर लागू करते हैं:

<p>${not empty promoPrice ? 'ONLY $'.concat(promoPrice) : 'FREE'}</p> 

या अगर आप भी कर रहे हैं अभी तक ईएल 2.2 पर, तो श्रेणीबद्ध मूल्यों सिर्फ मूल्य में inlined के साथ एक नया ईएल चर बनाने के लिए JSTL <c:set> का उपयोग नहीं:

<c:set var="promoPriceString" value="ONLY $${promoPrice}" /> 
<p>${not empty promoPrice ? promoPriceString : 'FREE'}</p> 

में अपने विशेष मामले, एक और तरीका विभाजित करने के लिए है दो भागों में अभिव्यक्ति:

<p>${not empty promoPrice ? 'ONLY $' : 'FREE'}${promoPrice}</p> 

तो ${promoPrice} शून्य या खाली है, यह वैसे भी मुद्रित नहीं किया जाएगा।

+0

बहुत बहुत धन्यवाद! किसी कारण से मुझे इस तरह के संगतता के बारे में कहीं भी जानकारी नहीं मिल सका। – alquatoun

+0

आपका स्वागत है। – BalusC

+0

'str1'concon ('str2') 'इस त्रुटि के साथ ईएल 2.1 (टॉमकैट 6) में विफल रहता है org.apache.jasper.JasperException: /WEB-INF/pages/x.jsp फ़ंक्शन कॉन्सट का उपयोग किया जाना चाहिए एक उपसर्ग जब एक डिफ़ॉल्ट नेमस्पेस निर्दिष्ट नहीं है। – naXa

2

सीधे JSTL रास्ता

<c:set var="promoPrice" value="4.67" /> 
<p> 
<c:choose> 
    <c:when test="${(promoPrice != null)}"> 
     ONLY $${promoPrice} 
    </c:when> 
    <c:otherwise> 
     FREE 
    <c:otherwise> 
</c:choose> 
</p> 
+1

मुझे यह संस्करण पसंद है, मैं बस कुछ और कॉम्पैक्ट की तलाश में था। धन्यवाद! – alquatoun

+0

हाँ, यह थोड़ा सा वर्बोज़ है लेकिन यह बहुत स्पष्ट है, खासकर यदि आप jstl अन्य स्थानों का उपयोग कर रहे हैं – joekarl

-3

क्या यह काम नहीं कर रहा?

<c:set var="promoPrice" value="4.67" /> 
<p>${(promoPrice != null) ? "ONLY $"${promoPrice} : "FREE"}</p> 

ध्यान दें कि $ {promoPrice} उद्धरण के बाहर है। यह सबसे सरल समाधान की तरह दिखता है।

+0

क्यों -1? क्या कोई भी इस जवाब को रेट कर सकता है? –

+3

यह कानूनी ईएल वाक्यविन्यास नहीं है; [ईएल विनिर्देश] से (http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html) (2.2 मील): _Nested eval-expressions, जैसे '$ {item [$ {i}]} 'अवैध हैं। – McDowell

-1

मैं इस जहाँ मैं एक चर mathjaxUrl है की तरह कुछ किया है और मैं इसे अन्य स्ट्रिंग

<c:set var="mathjaxUrl" value="https://cdnjs.cloudflare.com/ajax/libs/mathjax" /> 
... some other stuff here 
<c:set var="mathjaxUrl" value="${mathjaxUrl}?config=TeX-AMS-MML_HTMLorMML" /> 

आशा से संपर्क करना चाहते इस मदद आप

0

स्ट्रिंग संयोजन के लिए एक सरल और मजबूत समाधान, कि संगत है

<c:set var="promoPrice" value="4.67" /> 
<c:set var="priceText" value="ONLY ${promoPrice}" /> 
<p>${(promoPrice != null) ? priceText : "FREE"}</p> 

@BalusC के अनुसार, ईएल 2.2 यो से शुरू: ईएल 2.0+ के साथ, एक मध्यवर्ती चर का उपयोग करने के लिए है आप String#concat() विधि का उपयोग करके concatenation कर सकते हैं, और ईएल 3.0 से शुरू करने के लिए आप इसके लिए नए += ऑपरेटर का उपयोग कर सकते हैं।

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