xwiki开发者指南-GroovyClassHelloWorld教程

一般情况下,是不建议在xwiki页面创建一个Groovy类,通常更好的方式是用Java创建代码,然后通过Script Services在XWiki页面调用。

然而,在少数情况下是需要的,如当在一个wiki页面创建一个Groovy类,在其他wiki页面复用。

XWiki语法2.0+

  • 创建一个页面,例如Groovy.HelloWorldClass包含:

    此页面必须由具有编程权限的用户保存。

    {{groovy}}
    class HelloWorld
    {
      String say()
      {
        return "Hello World"
      }
    }
    {{/groovy}}

  • 在其他wiki页面使用这个Groovy class,假定Main.HelloWorldFromGroovy:

    此页面必须由具有编程权限的用户保存。

    {{include document="Groovy.HelloWorldClass"/}}

    {{groovy}}
    println new HelloWorld().say()
    {{/groovy}}

现在,当你查看Main.HelloWorldFromVelocity页面时,你会看到:Hello World

  • 请注意,这种方式是无法在Velocity调用HelloWorld类,你需要使用一个Groovy宏来查看。
  • 几个变量如xwiki,doc,xcontext已经绑定到Groovy的执行上下文,并且可以使用。有关详细信息,请参阅脚本页面

XWiki语法1.0

你需要使用XWiki.parseGroovyFromPage API方法。这种方法允许你从Velocity和Groovy脚本实例化一个Groovy类。

  • 创建一个新的页面,例如Groovy.HelloWorldClass包含:
    • 此页面必须由具有编程权限的用户保存。
    • 当创建一个页面,通过parseGroovyFromString以确保你闭合groovy标识符。

    /* Groovy Class #* */

    class HelloWorldClass
    {
      def xwiki
      def context

      void setObjects(xwiki, context)
      {
        setXWiki(xwiki)
        setContext(context)
      }

      void setXWiki(xwiki)
      {
        this.xwiki = xwiki
      }

      void setContext(context)
      {
        this.context = context
      }

      String say()
      {
        return "Hello World"
      }
    }

    /* *# */

    • 注意,可以把一个Velocity注释放在Groovy注释里,这样代码不会被Velocity解析。
    • 正如你所看到的,我们可以在这个类里获取和存储XWiki和Context对象,以便能够使用它们

用Velocity实例化和使用你的类

  • 创建一个新的页面,例如Main.HelloWorldFromVelocity包含:

    #set($groovyObject = $xwiki.parseGroovyFromPage("Groovy.HelloWorldClass"))
    $groovyObject.setObjects($xwiki, $context)
    $groovyObject.say()

用Groovy实例化和使用你的类

  • 创建一个新页面,例如Main.HelloWorldFromGroovy包含:

    此页面必须由具有编程权限的用户保存。

    <%
    groovyObject = xwiki.parseGroovyFromPage("Groovy.HelloWorldClass")
    groovyObject.setObjects(xwiki, context)
    print groovyObject.say()
    %>

  • 33
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lovelife110

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值