2012-12-19 13 views
53

में शून्य मानों को संभालना Freemarker में null मानों को कैसे संभालें? मुझे टेम्पलेट में कुछ अपवाद मिलते हैं जब null मान डेटा में मौजूद होते हैं।Freemarker

+0

संभव डुप्लिकेट: http://stackoverflow.com/questions/306732/how-to-check-if-a-variable-exists-in-a-freemarker-template – cowls

उत्तर

65

आप ?? परीक्षण ऑपरेटर का उपयोग कर सकते हैं:

यह जांच करता है कि वस्तु की विशेषता रिक्त नहीं है:

<#if object.attribute??></#if>

यह जांच करता है कि वस्तु या विशेषता रिक्त नहीं है:

<#if (object.attribute)??></#if>

स्रोत: FreeMarker Manual

+1

इस दृष्टिकोण में क्या अंतर है और has_content ?? –

+2

'has_content', शून्य-जांच के बगल में, यह भी जांचता है कि मान खाली नहीं है या नहीं। यह तार, अनुक्रम, हैश या संग्रह के लिए काम करता है। यदि वस्तु एक तिथि, बुलियन या संख्या है, तो यह गैर-खाली के रूप में कार्य करती है। अन्य सभी प्रकार के लिए यह खाली के रूप में कार्य करेगा। –

+0

मुझे यह समस्या है जहां मुझे यह जांचना है कि बीन में मान शून्य है या नहीं। मैंने निम्न कोशिश की: $ {checknull (Bean.getValue())}, जहां एक फ़ंक्शन <# फ़ंक्शन चेकनल x> <#if x??> <#return ""> <#else> <#return x> लेकिन मैं मिलता है "त्रुटि को क्रियान्वित करने मैक्रो: checknull आवश्यक पैरामीटर: एक्स निर्दिष्ट नहीं है।" त्रुटि –

1

मैं इसे दूसरी तरह के

<#if object.attribute??> 
    Do whatever you want.... 
</#if> 

तो object.attribute शून्य नहीं है, तो सामग्री प्रिंट किया जाएगा काम करता है लगता है।

54

freemarker 2.3.7 से शुरू, आप this syntax उपयोग कर सकते हैं:

${(object.attribute)!} 

या, आप एक डिफ़ॉल्ट पाठ प्रदर्शित जब विशेषता null है चाहते हैं: ?? ऑपरेटर

${(object.attribute)!"default text"} 
+1

जो लोग XDocReport के लिए टेम्पलेट इंजन के रूप में Freemarker उपयोग कर रहे हैं के लिए, यह ' org.freemarker जोड़ने के बाद काम कर रहा है फ्रीमार्कर 2.3.22 'आपके pom.xml पर। –

+0

यदि आपके पास कोई तिथि है और तिथि शून्य हो सकती है तो आप इसे कैसे करते हैं? दूसरे शब्दों में object.dateAququired जहां दिनांक प्राप्त किया जा सकता है और आपके पास $ {object.dateAququired? Date} –

+1

@StephaneGrenier का उपयोग '$ {(object.dateAququired? Date)!" मौजूद नहीं है "}' –

0

उपयोग आपके <#if> कथन के अंत में।

यह उदाहरण दिखाता है कि फ्रीमेकर टेम्पलेट में दो सूचियों के लिए null मानों को कैसे संभालना है।

List of cars: 
<#if cars??> 
    <#list cars as car>${car.owner};</#list> 
</#if> 
List of motocycles: 
<#if motocycles??> 
    <#list motocycles as motocycle>${motocycle.owner};</#list> 
</#if> 
संबंधित मुद्दे