如何获取特定wiki的空间列表?

时间:2013-07-23 13:52:03

标签: velocity xwiki

我想在我的xwiki农场获得所有wiki的空间

我写了这段代码:

#set($WikiManager = $xwiki.wikimanager)
#set($wikiList = $WikiManager.getAllWikis())
$msg.get("wikimanager.totalnumberofwiki") : $wikiList.size()
#if($wikiList.size()!=0)
  #foreach($wiki in $wikiList)
    * *$wiki*

    ## pb in this line below
    #set($spaces = $xwiki.getSpaces())

    <table>
      <tr><th>Spaces</th></tr>
      #foreach ($space in $spaces)
        <tr><td>$space</td></tr>
      #end
    </table>
  #end
#end

但是这个脚本只给了我执行它的当前wiki的空格。

你知道如何解决它吗?

感谢您的帮助。

埃里克

2 个答案:

答案 0 :(得分:0)

您可能应该更改数据库:

      #set($currentwiki = $xcontext.database)

      $xcontext.setDatabase($wikidoc.wikiName)

然后改回来:

          $xcontext.setDatabase($currentwiki)

答案 1 :(得分:0)

一个说Woolear,你必须切换数据库上下文。 在xwiki语法2.0中,您的代码应为:

{{velocity}}
#set($currentwiki = $xcontext.database)
#set($WikiManager = $xwiki.wikimanager)
#set($wikiList = $WikiManager.getAllWikis())
$msg.get("wikimanager.totalnumberofwiki") : $wikiList.size()
#if($wikiList.size()!=0)
  #foreach($wiki in $wikiList)
    === $wiki :

    |=Spaces
    ##switch database
    $xcontext.setDatabase($wiki.wikiName)
    #set($spaces = $xwiki.getSpaces())
      #foreach ($space in $spaces)
        |$space
      #end
  #end
#end
$xcontext.setDatabase($currentwiki)
{{/velocity}}