2011-01-28 34 views
27

मैं एक टेम्पलेट nested दूसरों को cont1, cont2, cont3 में शामिल करना चाहता हूं। और नेस्टेड टेम्पलेट केवल cont1 के लिए एक विशिष्ट नियंत्रण छुपाया जाना चाहिए। cont1 में शामिल होने से पहले मैं कुछ ध्वज परिवर्तनीय $hideMyControl पर मान असाइन करना चाहता हूं।वेग: यह जांचने का कोई तरीका है कि चर परिभाषित किया गया है या नहीं

और नेस्टेड टेम्पलेट के अंदर मैं यह जांचना चाहता हूं कि $hideMyControl असाइन किया गया मान है या नहीं।

ऐसी जांच कैसे करें?

उत्तर

13

आप इस अधिक जानकारी के लिए

#if($!{$articleLeader}) 
     // Perform your operation or the template part you want to show. 
    #end 

का उपयोग कर, 'औपचारिक संदर्भ' Apache Velocity Reference Manual की धारा देख सकते हैं।

+11

#if में औपचारिक और चुप नोटेशन का उपयोग करने का कोई मतलब नहीं है, जिसे आपने बिल्कुल सही नहीं किया है। बस #if ($ आलेख) ## यहां से प्रदर्शन करें #end –

+2

तो यह जांचने के बारे में क्या है कि यह परिभाषित नहीं है? – Snekse

+0

#if ($! {$ ArticleLeader}) काम नहीं किया, #if (! $ {ArticleLeader}) ... –

28
#if($hideMyControl) 
    // your code 
#end 

$ hideMyControl परिभाषित किया गया है, तो आपके कोड यदि $ hideMyControl वेग संदर्भ में है और बूलियन 'सही' मूल्य (या 'गलत' के रूप में अच्छी तरह से) नहीं है

+10

जब तक छुपा नहीं है MyControl एक बुलियन है जो झूठा है .... –

0

जांच करने के लिए निष्पादित करेंगे:

#if ($hideMyControl && $hideMyControl != true) 
    ##do stuff 
#end 

निश्चित रूप से, यदि आप वास्तव में अपने $ hideMyControl चर का उपयोग बुलियन प्रकार के रूप में करते हैं, तो आपको शर्त के दूसरे भाग की आवश्यकता नहीं है।

3
#if($!{hideMyControl} != "") 
## do something if $hideMyControl is defined 
#end 

यह मेरे लिए एडब्ल्यूएस एपीआई गेटवे बॉडी मैपिंग टेम्पलेट्स में काम करता है। अधिक जानकारी के लिए कृपया Velocity उपयोगकर्ता मार्गदर्शिका में Quiet Reference Notation देखें।

+0

केवल एक जो मेरे लिए काम करता है एडब्ल्यूएस एपीआई गेटवे बॉडी मैपिंग टेम्पलेट्स। – leo

1

मैं

#if ($hideMyControl) 
    //do something 
#end 
कुछ महीने पहले के बाद से

, उपयोग कर रहा था लेकिन आज इसकी अब और काम नहीं कर रहा।

मैं मदद के लिए यहां आया था, और इसे लिखने का एक नया तरीका देखा:

#if($!{$hideMyControl}) 
    // do something 
#end 

इस कोड काम करता है!

0

docs for Strict Reference Mode के अनुसार यह देखने के लिए कई निर्माण संभव है कि चर परिभाषित किया गया है या नहीं।

#if ($foo)#end     ## False 
#if (! $foo)#end    ## True 
#if ($foo && $foo.bar)#end  ## False and $foo.bar will not be evaluated 
#if ($foo && $foo == "bar")#end ## False and $foo == "bar" wil not be evaluated 
#if ($foo1 || $foo2)#end  ## False $foo1 and $foo2 are not defined 

तो इस कोड मेरे मामले में काम करता है।

#if(!$value) 
    // Perform your operation or the template part you want to show. 
#end 
संबंधित मुद्दे

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