2009-07-13 47 views
10

ベロシティで三項演算子を実行する方法はありますか? これは私がやってみたいものです。ベロシティの条件演算子

#set ($name = ($args.get(0) == "") ? "default" : $args.get(0)) 

代わりのがっしりした場合、他の

#if ($args.get(0) == "") 
    #set ($name = "default") 
#else 
    #set ($name = $args.get(0)) 
#end 

任意のアイデア?

答えて

6

VTL Referenceの経験と読解のためにこれを行う方法はありません。このような課題がたくさんある場合は、あなた自身のvelocimacroを定義して、if elseを繰り返さないようにすることができます。マクロは、単一の文字列を出力した場合

たとえば、次の操作を行うことができます:それはの#setのRHSが解析される手段として、マクロ呼び出しの周り

#set ($name = "#condOpt($args.get(0), "default")") 

二重引用符が重要です。あなたが言ったように

+0

機能のように動作するマクロを取得する方法はありますか?それは変数を返すように?私がマクロに '$ args.get(0)'のチェックをして、もしそれが本当であるかどうかを調べるようにしたならば、 '' $ args.get(0) ''空であるかどうか。 – peirix

+0

マクロが1つの文字列だけを出力する場合は、その文字列を名前に設定できます。私の答えに編集を参照してください。 – Mark

+0

それは、私を捕まえたマクロコールの周りの二重引用符でした。今は固定されています。ありがとう(: – peirix

2

私はマーク、やってしまった:

#macro(condOp $check, $default) 
    #if ($check == "") 
     $default 
    #else 
     $check 
    #end 
#end 

そして私はそうのようにそれを呼び出すことができます。

#set ($name = "#condOp($args.get(0), 'default')") 
+0

私は同じ例で私の答えを編集していたのと同じようにこれを追加していました!! – Mark