2012-12-19 15 views
53

Freemarker'da null değerleri nasıl kullanılır? Verilerde null değerleri bulunduğunda şablonda bazı istisnalar alıyorum. nesneye ayrılan boş değilseFreemarker'da boş değerleri işleme

Bu kontroller:

+0

Olası Çoğalt: http://stackoverflow.com/questions/306732/how-to-check-if-a-variable-exists-in-a-freemarker-template – cowls

cevap

65

Sen ?? testi operatörünü kullanabilirsiniz

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

Bu kontroller nesne veya nitelik boş değilse:

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

Kaynak: FreeMarker Manual

+1

Bu yaklaşımın arasındaki fark nedir ve has_content ?? –

+2

'has_content', null-check seçeneğinin yanında, değerin boş olmadığını da kontrol eder. Bu dizeler, diziler, karma veya koleksiyonlar için çalışır. Nesne bir tarih, boole veya bir sayıysa, boş olmayan olarak davranır. Diğer tüm tipler için boş olarak hareket edecektir. –

+0

Fasulye değerinin sıfır olup olmadığını kontrol etmek zorunda olduğum bu sorunu yaşıyorum. Aşağıdakileri denedim: $ {checknull (Bean.getValue())}, burada bir işlev <#function checknull x> <#if x??> <#return ""> <#else> <#return x> ama olsun "yürütülürken hata makro: checknull parametreyi gerekli: x belirtilmemiştir." Hata –

1

Ben başka bir yol

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

object.attribute NOT NULL ise, o içerik basılacaktır çalışır düşünüyorum.

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

, sen this syntax kullanabilirsiniz <#if> ifadesinin sonunda.

Bu örnek, bir Freemaker şablonunda iki liste için null değerlerinin nasıl işleneceğini gösterir.

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> 
+1

<#function checknull x> <#if x??> <#return x>, bu ' org.freemarker ekledikten sonra çalışıyor http://www.microsoft.com/turkiye/index.php?displaylang=tr adresinden erişebilirsiniz. –

+0

Bir randevunuz varsa ve tarihiniz boş kalırsa nasıl yaparsınız? Başka bir deyişle object.dateAcquired nerede dateAcquired boş olabilir ve $ {object.dateAcquired? Date} var –

+1

@StephaneGrenier '$ {(object.dateAcquired? Date)! "Not present"} ' –

0

Kullanım ?? operatörü: Öznitelik null olduğunda varsayılan bir metni görüntülemek isterseniz,

${(object.attribute)!} 

ya: freemarker 2.3.7 başlayarak

İlgili konular