Velocityでarrayを扱っているとBooleanが表示される場合

kisyaman 44views 更新:2016年7月13日

カレンダーの曜日をarrayに取って並び替えて表示する、という作業をVelocityでしていたのですが、なぜかカレンダーの上にBooleanの値 “true” が表示されてしまって困っていました。作業していたのは以下のforeach文です。

#foreach($test in $!weekOrder)
    #set ($target = $!{weekOrder.get($theDay)})
    $target
    $!weekRevised.add($target)
    $target
    #set ($theDay = $theDay + 1)
    $target
    #if( 7 <= $theDay)
        #set($theDay = 0)
        $target
    #end
    $target
#end

この中での問題を起こしているのは

$weekRevised.add($target)

でした。以前 array の .add() を調べていた時に、 add は Boolean を返すから気をつけて、という旨の記事を読んでいたので $!variable のように “!” を付けて解決したと思い込んでしまっていました。しかし表示するか表示しないかの問題ではなく、Booleanを返すか返さないかの問題だったので、解決するためには何かの変数に割り振ってあげる必要があったようです。

#set($dummy = $!{weekRevised.add($target)})

なので、該当する部分を上のように、適当な変数を作って割り当てる形にしたところ解決しました。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません