3

我们公司已经开始使用Confluence wiki 作为我们团队的文档站点,并且我们正在实现一个名为PocketQuery的宏。

此宏将 SQL 数据动态地拉入站点(我们正在拉取站点联系人等信息)。

它使用速度模板来显示它的数据,但是在进行简单的数组索引时我遇到了问题。

编码:

#set ( $page = $additionalParams.get('Page') )
#set ( $pages = "" )
#if ( $page != $null && $page != "" )
    #set ( $pages = $page.split(";") )
#else
    #set ( $pages = [] )
#end

$additionalParams是一个在模板外初始化的列表,包含传递给宏的参数,在这种情况下:

页面=站点名称;服务器

我试图设置的代码是Name;Server$additionalParams列表中提取值,如果它不为空,则拆分该值,然后获取第一个值。

我努力了:

$pages.get(1)
$pages[1]

但是没有任何值被拉取(我也尝试将零作为索引 - 相同的结果)。

遍历这个数组并打印每个条目确实有效 - 这意味着那里值。

我想做的就是索引到数组中-无论如何似乎都无法挖掘。

可以将其转换为列表,以便可以使用该$pages.get方法对其进行索引吗?

扩展它会让我使用$pages.contains方法吗?

Confluence 使用的是 Velocity 1.6。

编辑:

此页面此页面上的解决方案不起作用 - 我猜测(疯狂地)可能正确的对象不在模板使用它们的上下文中?

(PocketQuery 或 Confluence 会这样做吗?)

我将如何使用“ListTool”?

4

2 回答 2

2

我可以让它以任何优雅的方式工作的唯一方法如下:

#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
    #foreach($i in $Page.split(";"))
        $Pages.add($i)
    #end
#end

这会初始化一个单独的数组,遍历拆分值并将它们添加到单独的数组中,这似乎可以使用此问题中提供的方法

然后我可以继续使用它:

$Pages.get(0)//Would return "Site Name"

并且

$Pages.contains("Site Name")//Would return true
于 2013-06-14T04:17:35.313 回答
-2

mtbennet 实际上是正确的 - 我测试过并且有效!我花了大约一个月的时间找到了 asnwer 和他的代码片段

#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
    #foreach($i in $Page.split(";"))
        $Pages.add($i)
    #end
#end
于 2014-12-10T13:17:46.447 回答