我们公司已经开始使用Confluence wiki作为我们团队的文档站点,我们正在实现一个名为PocketQuery的宏。
此宏将SQL数据动态地拉入网站(我们正在提取网站联系人等信息)。
它使用Velocity Templates来显示它的数据,但是在进行简单的数组索引时我遇到了问题。
代码:
#set ( $page = $additionalParams.get('Page') )
#set ( $pages = "" )
#if ( $page != $null && $page != "" )
#set ( $pages = $page.split(";") )
#else
#set ( $pages = [] )
#end
$additionalParams
是一个已在模板外部初始化的列表,包含传递给宏的参数,在这种情况下:
Page =网站名称;服务器
我尝试设置的代码是从Name;Server
列表中提取$additionalParams
值,如果值不为空则拆分值,然后获取第一个值。
我试过了:
$pages.get(1)
$pages[1]
然而没有价值被拉动(我也尝试过零作为指数 - 结果相同)。
通过此数组进行操作并打印每个条目确实有效 - 这意味着是值。
我希望能够做的就是索引数组 - 无论如何都无法挖掘这个。
这可以转换为列表,以便它可以使用$pages.get
方法对其进行索引吗?
对此进行扩展可以让我使用$pages.contains
方法吗?
Confluence正在使用Velocity 1.6。
编辑:
The solutions on this page和on this page不起作用 - 我猜测(Wildly)也许正确的对象不在模板的上下文中使用它们?
(PocketQuery或Confluence会这样做吗?)
我如何使用'ListTool'?
答案 0 :(得分:1)
我能用这种优雅工作的唯一方法如下:
#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
#foreach($i in $Page.split(";"))
$Pages.add($i)
#end
#end
初始化一个单独的数组,遍历拆分值并将它们添加到单独的数组中,这似乎可以使用方法provided in this question
然后我可以继续使用它:$Pages.get(0)//Would return "Site Name"
还
$Pages.contains("Site Name")//Would return true
答案 1 :(得分:-1)
m.t.bennet实际上是对的 - 我测试了它的确有效!我用了大约一个月的时间来找到asnwer和他的代码片段
#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
#foreach($i in $Page.split(";"))
$Pages.add($i)
#end
#end