Confluence / Velocity模板中的数组索引

时间:2013-06-11 01:17:39

标签: arrays velocity confluence

我们公司已经开始使用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 pageon this page不起作用 - 我猜测(Wildly)也许正确的对象不在模板的上下文中使用它们?

(PocketQuery或Confluence会这样做吗?)

我如何使用'ListTool'?

2 个答案:

答案 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