2009-03-18 11 views
14

में एक चर को अनसेट करना क्या 'शून्य' या 'अपरिभाषित' के लिए वेग संदर्भ सेट करना संभव है?Velocity

Velocity template language reference कहते

#set - एक संदर्भ स्वरूप का मूल्य स्थापना की: - असाइनमेंट की एलएचएस एक चर होना चाहिए

$ref:

# [ { ] set [ } ] ($ref = [ ", ' ]arg[ ", ' ])

प्रयोग संदर्भ या एक संपत्ति संदर्भ।

arg - असाइनमेंट का आरएचएस, डबल कोट्स में संलग्न होने पर तर्क को पार्स किया गया है, और एकल कोट्स में संलग्न होने पर पार्स किया गया है। यदि आरएचएस शून्य से मूल्यांकन करता है, तो इसे एलएचएस में असाइन नहीं किया गया है। (जोर मेरा)

मुझे समकक्ष #unset मैक्रो नहीं मिल रहा है।

उत्तर

12

पर पढ़ें ...

कैसे वेग कॉन्फ़िगर किया गया है पर निर्भर करता है, यह आमतौर पर संभव नहीं इस तंत्र के माध्यम से संदर्भ से एक मौजूदा संदर्भ दूर करने के लिए है। (नोट कि इस वेग विन्यास की एक बदलते द्वारा अनुमति दी जा सकती है गुण)

में डिफ़ॉल्ट कॉन्फ़िगरेशन VE संपत्ति

directive.set.null.allowed = false 

अगर सही है, की एक दाहिने हाथ की ओर आ रही है, एक अमान्य संदर्भ या शून्य मान के साथ #set() कथन बाईं ओर बाईं ओर सेट करेगा। झूठे हैं, तो बाएं हाथ की ओर true को रहना होगा ही

बदलें यह org.apache.velocity.app.Velocity पर setProperty() का उपयोग करने और आप जाने के लिए तैयार कर रहे हैं।

23

आप झूठी संदर्भ को सेट कर सकते हैं। एक गैर शून्य संदर्भ के रूप में सही माना जाता है, तो आप परीक्षण कर सकते हैं तो संदर्भ परीक्षण कर सकते हैं। यह loops में उपयोगी है।

 
#foreach ($obj in $list) 
#set ($x = false) 
#set ($x = $obj.maybeNull()) 
#if ($x) 
... 
$x 
#end 
#end 
+0

के बाद से वेग चर पुराने मूल्य रखेंगे, अगर आप एक "नल-मूल्य निर्दिष्ट करने की कोशिश ", मैंने यह समाधान काफी अच्छा पाया। लूप के अंत में मैं चर को गलत पर सेट करता हूं और जब आप मान निर्दिष्ट नहीं कर सकते हैं तो इसका मान गलत होगा। – Goot

+0

कूल वर्कअराउंड। धन्यवाद :) – Dimitris

1

आप दायरे वाले चर पाने के लिए कोशिश कर रहे हैं, तो आप गुंजाइश #foreach द्वारा स्थापित दुरुपयोग कर सकते हैं:

#foreach($localVar in [ 'theValue']) 

#end 

## localVar will be unset (or returned to previous value) again 
संबंधित मुद्दे