前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xwiki开发者指南-GroovyClassHelloWorld教程

xwiki开发者指南-GroovyClassHelloWorld教程

作者头像
lovelife110
发布2021-01-14 11:52:39
6410
发布2021-01-14 11:52:39
举报
文章被收录于专栏:爱生活爱编程

一般情况下,是不建议在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)

{

代码语言:txt
复制
 setXWiki(xwiki)
代码语言:txt
复制
 setContext(context)

}

void setXWiki(xwiki)

{

代码语言:txt
复制
 this.xwiki = xwiki

}

void setContext(context)

{

代码语言:txt
复制
 this.context = context

}

String say()

{

代码语言:txt
复制
 return "Hello World"

}

}

/* *# */

代码语言:txt
复制
- 注意,可以把一个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() %>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/04/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • XWiki语法2.0+
  • XWiki语法1.0
    • 用Velocity实例化和使用你的类
      • 用Groovy实例化和使用你的类
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档