У меня есть этот код:Freemarker: Получить элемент из массива по индексу
<#local slots = time_utils.get_slots(objectArray) />
<#local days = time_utils.get_short_days(objectArray) />
<#local index = 0 />
<#list days as day>
<#list slots as slot>
<#if time_utils.is_slot_available(objectArray[index], slot, day)> bla bla </#if>
<#local index = index + 1 />
</#list>
</#list>
Функция:
<#function is_slot_available date slot short_date>
<#local hour_of_date = '${date.startsAt?string["HH"]}' />
<#local day_of_date = '${date.startsAt?string["dd"]}' />
<#if (hour_of_date == '${slot[6..7]}') && (day_of_date == '${short_date[short_date?length-5..short_date?length-4]}')>
<#return true />
</#if>
<#return false />
</#function>
Когда я запускаю этот код, у меня есть ошибки: Ошибка выполнения макроса: is_slot_available Необходимый параметр: дата не указана.
Я не получаю эту ошибку при замене index
на 0 или любое число в objectArray[index]
в вызове функции.
Итак, каков путь rignt для этого?
Спасибо!
Вы заметили, что когда вы вызываете функцию, вы передаете 'day' как' slot' и 'slot' как' short_date'? –
Нет, я этого не делал. Благодаря! – dardy
Я полагаю, что значение 'index' увеличивается до тех пор, пока оно не выходит за пределы диапазона, или пробегает элемент массива, который хранит' null'. (Не связано с вашей проблемой, но обратите внимание, что это возможно: '<#local index ++ />') – ddekany