【问题标题】:Array indexing in Confluence / Velocity templatesConfluence / Velocity 模板中的数组索引
【发布时间】:2013-06-06 18:36:51
【问题描述】:

我们公司已经开始使用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 是一个在模板外部初始化的列表,包含传递给宏的参数,在这种情况下:

页面=站点名称;服务器

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

我试过了:

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

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

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

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

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

扩展这是否允许我使用$pages.contains 方法?

Confluence 使用的是 Velocity 1.6。

编辑:

The solutions on this pageon this page 不起作用 - 我猜测(疯狂地)可能正确的对象不在模板使用它们的上下文中?

(PocketQuery 或 Confluence 会这样做吗?)

我将如何使用“ListTool”?

【问题讨论】:

  • $page != $null || $page != "" 似乎错了 - 我想你想在那里使用&&
  • 你是对的@PaulBellora,会解决这个问题,但是我之前访问过你的第二个链接,但没有一个解决方案有效
  • 这可能不是问题,但您可以使用$pages.get(0) 来获取第一个值,因为数组具有从零开始的索引。
  • 我都试过了——都不管用。

标签: arrays velocity confluence


【解决方案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

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多