2015-02-26 31 views
5

Ben yeni bir parametre eklemek için farklı .vtl dosyaları bir dizi arasında paylaşılan bir makro güncellemek istiyorum. Ancak, sadece .vtl dosyamdan birinde aramayı değiştirmek ve diğerlerini değiştirmeden bırakmak istiyorum. Bu yüzden, herhangi bir parametre sağlanmamışsa, isteğe bağlı bir parametre veya varsayılan bir değere sahip bir parametre eklemek istiyorum.Apache Velocity makro varsayılan parametre değerleri

Belgeler (here) "#macro" bölümünde isteğe bağlı varsayılan değerlerden bahseder, ancak onlarla birkaç saat süren bir fidgeting sonrasında, sözümün doğru sözdiziminin ne olduğunu anlayamıyorum.

#macro(my_macro) 
     oldValue 
    #end 

Ve benzeri bir makro çevirmek:

Yani mevcut makro almak istiyorum ben bu iki aramaların biriyle düzgün arayıp alabilir

#macro(my_macro $param="oldValue") 
     $param 
    #end 

Belirtilen çıkışlar:

#my_macro()   => oldValue 
    #my_macro("newValue") => newValue 

Dokümanlarda belirtilenlerin her bir permütasyonunu denedim, ancak işe yarayan hiçbir şey bulamıyorum. Doğru sözdizimini bilen var mı? Muhtemelen özlediğim bir özellik var mı?

Ben Velocity 1.7 ve VelocityTools 2.0 kullanıyorum. Bu konularda ben de ayar velocimacro.arguments.strict=true kullanıyorum. Ancak, bu özelliği bir grup güncelleme/yeniden test olmadan kolayca değiştiremiyorum.

cevap

1

Standart parametre de beni işe değildir. Ama bu geçici çözümü yapabilirsiniz:

#macro(my_macro $param) 
    #if(!$param) 
    #set($param = "oldValue") 
    #end 
    $param 
#end 
+0

Evet, o rota gidiş sona erdi, ama gerçekten yapmak istemiyordu hangi false velocimacro sıkı özelliğini değiştirmek için bana gerekli. Ama her neyse, her şey iyi bitiyor. – LoganBlack