2012-09-24 22 views
33

में शून्य सूची की जांच कैसे करें मेरे जावा कोड में List<String> listS =null है और मैं इसे अपनी टेम्पलेट फ़ाइल में पास करता हूं।फ्रीमार्कर

अब मैं यह सुनिश्चित करना चाहता हूं कि if list has some data then only do something

मैं

<#if listS = null> 
AND 
<#if !listS> 
AND 
<#if listS?size=0> 

की कोशिश की है लेकिन इनमें से कोई भी काम करने लगते हैं। मेरे पास कुछ जावा है जो मैं अपना जावा कोड हूं; जिसके माध्यम से, अगर कुछ शर्त सही है, तो मैं new यह listS और इसे पॉप्युलेट करता हूं।

इसलिए मुझे यह जानने की ज़रूरत है कि listS पॉपलेट किया गया है या केवल मेरी टेम्पलेट फ़ाइल में शून्य है या नहीं।

मैं यह कैसे कर सकता हूं? धन्यवाद।

संपादित करें: इसके अलावा, मेरे पास संरचनाओं की एक सूची है, प्रत्येक में यह सूची है, (पॉप्युलेट या एक अलग मुद्दा नहीं है), और मैं संरचना की पूरी सूची पास कर रहा हूं, इसलिए टेम्पलेट फ़ाइल के साथ एक बूलियन मान पास कर रहा हूं संरचनाओं की मेरी सूची के साथ संभव नहीं है, क्योंकि मुझे प्रत्येक सूची में पार करना होगा, और वह ट्रैवर्सल मैं टेम्पलेट फ़ाइल में ही करना चाहता हूं।

संपादित करें 2: जो लोग जानते हैं कि जावा नल क्या है, FreeMarker 2.3.x उन्हें अनुपलब्ध मानों के रूप में मानता है। बस, टेम्पलेट भाषा शून्य की अवधारणा को नहीं जानता है। उदाहरण के लिए, यदि आपके पास एक बीन है जिसमें पहली नाम संपत्ति है, और उस संपत्ति का मूल्य शून्य है, तो यह वही है जैसे कि ऐसी कोई संपत्ति नहीं थी, जहां तक ​​टेम्पलेट का संबंध है (माना जाता है कि आपने नहीं किया कुछ चरम ऑब्जेक्ट रैपर का उपयोग करने के लिए नि: शुल्क फ्रीमार्कर कॉन्फ़िगर किया गया है)। एक विधि कॉल जो नल लौटाता है उसका परिणाम गायब चर के रूप में भी माना जाता है (फिर, यह मानते हुए कि आप कुछ सामान्य ऑब्जेक्ट रैपर का उपयोग करते हैं)। एफएक्यू में और देखें।

Freemarker Manual

लेकिन मैं अभी भी यह कैसे काम करने के लिए के लिए जवाब है, अगर सब पर मैं कर सकते हैं मिल गया नहीं किया।

+0

मैं हमेशा सूची शुरू करने का सुझाव देता हूं और सूची का आकार 0 से बड़ा है या नहीं, भले ही आप इसे करने के इस तरीके का उपयोग करना चाहते हैं, तो मुझे कोई मदद नहीं है क्योंकि मैं ' दुर्भाग्य से पहले freemarker इस्तेमाल नहीं किया। –

उत्तर

54

उपयोग has_content निर्मित:

<#if list5?has_content> 
+0

इसे यहां पूछने के लिए खेद है, लेकिन वैसे भी है, मैं निम्नलिखित प्राप्त कर सकता हूं? मान लें कि मैं '<#if somwething><# newVar असाइन करें> 'अब बाद में मुझे यह जानने की ज़रूरत है कि क्या नया वैरिएबल है? – Kraken

+0

'has_content' गैर-मौजूदा चर पर भी काम करेगा (विस्फोट नहीं करेगा), इसलिए आप कोड में बाद में 'newVar? Has_content' कर सकते हैं और कुछ नया नहीं होगा अगर' नया 'कभी परिभाषित/प्रारंभ नहीं हुआ। – Bohemian

+0

i.e '<#if newVar? Has_content> 'काम करेगा ehh? – Kraken

4

तुम भी इस तरह के रूप missing value test operator उपयोग कर सकते हैं,:

<#if listS??> 
    <#list listS.stuff as stuff> 
     ${stuff.value} 
    </#list> 
</#if> 
0
<#list myList![] as element> 
    <#-- do something per element --> 
</#list> 

तो सूची रिक्त है या परिणाम खाली खाली हो wil ।