Freemarker:按索引从数组中获取元素
Freemarker: Get element from array by index
我有这个代码:
<#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
必需参数:未指定日期。
当我在函数调用中用 0 或 objectArray[index]
中的任何数字替换 index
时,我没有收到此错误。
那么这样做的正确方法是什么?
谢谢!
感谢@ddekany:
I guess the value of index increases until it goes out of range, or
runs into an array item that stores null.
这就是问题所在。
我有这个代码:
<#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
必需参数:未指定日期。
当我在函数调用中用 0 或 objectArray[index]
中的任何数字替换 index
时,我没有收到此错误。
那么这样做的正确方法是什么?
谢谢!
感谢@ddekany:
I guess the value of index increases until it goes out of range, or runs into an array item that stores null.
这就是问题所在。