ユーザーからのインプットが「水曜日」で、intとして 3 を受け取ったとします。
#set ($theDay = 3)
水曜日を週の先頭に持ってくる週のリストを作成します。まず順番通りの曜日のリストを $weekOrder に作ります。そして空のリストを $weekRevised に作ります。あとはforeachで指定された曜日から後ろ[水, 木, 金, 土]をリストに入れた後に、指定された曜日から前[日, 月, 火]をリストに入れます。
#set ($weekOrder = ["$l10n.SCHEDULE_SUNDAY","$l10n.SCHEDULE_MONDAY","$l10n.SCHEDULE_TUSEDAY","$l10n.SCHEDULE_WEDNESDAY","$l10n.SCHEDULE_THURSDAY","$l10n.SCHEDULE_FRIDAY","$l10n.SCHEDULE_SATURDAY"] ) #set ($weekRevised = []) #foreach($test in $weekOrder) #set ($target = $weekOrder.get($theDay)) $!weekRevised.add($!target) #set ($theDay = $theDay + 1) #if( 7 <= $theDay) #set($theDay = 0) #end #end
問題だったのは、 $!weekRevised.add($!target) に出てくる “.add($!target)” の使い方で、”.add()” はBooleanを返すので
#set ($!weekRevised = $!weekRevised.add($!target))
のように定義してしまうと、addした後にBooleanで定義し直してしまうので、結果的には何も変化しません。 ここに少し躓いてしまいました。