2016-08-11 5 views
0

У меня есть этот код: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 для этого?

Спасибо!

+0

Вы заметили, что когда вы вызываете функцию, вы передаете 'day' как' slot' и 'slot' как' short_date'? –

+0

Нет, я этого не делал. Благодаря! – dardy

+1

Я полагаю, что значение 'index' увеличивается до тех пор, пока оно не выходит за пределы диапазона, или пробегает элемент массива, который хранит' null'. (Не связано с вашей проблемой, но обратите внимание, что это возможно: '<#local index ++ />') – ddekany

ответ

0

Благодаря @ddekany:

I guess the value of index increases until it goes out of range, or runs into an array item that stores null.


Это была проблема.

Смежные вопросы