简介

本文将介绍如何编写一个提供给后台接口并使用脚本在前端页面调用。

使用maven下载XWiki提供的模板项目

保证你的maven已经安装,然后执行命令

mvn archetype:generate \-DarchetypeArtifactId=xwiki-commons-component-archetype \-DarchetypeGroupId=org.xwiki.commons \-DarchetypeVersion=10.11.3

下载成功之后会询问项目的自定义预设信息

当你输入’Y’确认了以后就会在本地生成项目了
模板项目里边的文件列表如下

pom.xml
src/main/java/com/fxp/HelloWorld.java
src/main/java/com/fxp/internal/DefaultHelloWorld.java
src/main/java/com/fxp/internal/HelloWorldScriptService.java
src/main/resources/META-INF/components.txt
src/test/java/com/fxp/HelloWorldTest.java

介绍几个比较重要的文件

  • components.txt:用于实例的注入,你编写的bean都要在此文件中声明才能注入到应用上下文中。
  • HelloWorldScriptService.java:用于把你的bean暴露给前端页面的脚本,脚本可以通过services对象找到你的bean。

如何写一个bean并且暴露给前端页面

第一步:编写你的bean

package com.fxp.internal;import com.fxp.HelloWorld;
import org.xwiki.component.annotation.Component;
import javax.inject.Singleton;/*** Implementation of a <tt>HelloWorld</tt> component.*/
@Component
@Singleton
public class DefaultHelloWorld implements HelloWorld
{@Overridepublic String sayHello(){return "hello I come from custom jar!!";}
}

第二步:在components.txt中声明你的bean

com.fxp.internal.DefaultHelloWorld
com.fxp.script.HelloWorldScriptService

第三步:注入到ScriptService的bean中,通过该bean的方法暴露出去。

package com.fxp.script;import org.xwiki.component.annotation.Component;
import org.xwiki.script.service.ScriptService;import com.fxp.HelloWorld;import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;/*** Make the HelloWorld API available to scripting.*/
@Component
@Named("hello")
@Singleton
public class HelloWorldScriptService implements ScriptService
{@Injectprivate HelloWorld helloWorld;public String greet(){return this.helloWorld.sayHello();}
}

把项目打成jar包并且导入到XWiki中

在项目目录下使用mvn install命令生成jar包,如果成功可以在打印信息的最后看到生成的jar包目录,如下

再把jar包复制到XWiki应用的lib目录下

#我是用docker部署的,所以要用docker cp命令
docker cp C:\Users\Administrator\.m2\repository\com\fxp\test-component\1.0-SNAPSHOT\test-component-1.0-SNAPSHOT.jar 747f836b8a05:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib

重启XWiki项目

到此,jar包部署完成,下一步测试一下我们的jar包。

在前端使用脚本访问你的接口

我们编写的ScriptService的bean方法可以在前端脚本中使用services对象引用到,在XWiki编辑框中输入如下脚本(hello就是我们使用@Named(“hello”)声明的对bean名称)

点击保存并查看,效果如下

总结

到此,从后端API到前端脚本的流程都打通了。

XWiki开发指南3-自定义扩展jar包相关推荐

  1. jmeter 导入java,JMeter导入自定义的Jar包的详解教程

    1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...

  2. Android系统(20)---开发android项目的常用jar包

    1. 百度地图 Armeabi/libBaiduMapSDK_v3_4_0_15.so, libBMapApiEngine.so baidumapapi_v3_4_9.jar(demo),locSDK ...

  3. Android安卓开发-eclipse正确添加第三方jar包

    本文转载自http://www.cnblogs.com/developerY/archive/2013/04/18/3027997.html,在此对原作者表示感谢! 在android项目中添加第三方j ...

  4. xwiki开发指南1-使用XWiki创建FAQ应用

    本文是按照XWiki官网开发指南-FAQ应用创建,自己翻译总结的版本. 此篇含有大量图片,关于XWiki的开发,将在下一篇讲解. 关于XWiki的部署也会单独写一篇基于docker的部署文. 使用XW ...

  5. SpringBoot项目开发(十):引用本地jar包与打包本地jar

    标题可能有点绕口,在实际开发中,有时所引用的jar架包无法在 maven 中央仓库里找到,那么j就要引用本地jar包,然而在项目开发完成后,需要打包部署时,引用的本地jar包没有打包进去部署包,就会导 ...

  6. Java开发过程中开发工具Eclipse中导入jar包的过程

    欢迎欣赏我的第二篇随笔.我们在创建好一个动态网站项目之后,如果没有部署maven的情况下,你可以按照以下的方法,直接把要用的jar包导入你的工程中,而不用再部署maven. 例如在使用JDBC编程时需 ...

  7. 如何在eclipse中自定义一个jar包名称

    第一步:选择 Add Library 第二步:选择User Library 第三步: 第四步:添加下载好的jar包 这样自己定义的包名和导包就完全了.

  8. 在WEB开发的时候导入各种jar包

    使用eclipse导入很简单 右击你的project,选择properties,然后选择java build path,接着选择libraries,点击add external jars即可 如果你还 ...

  9. android中将自己的自定义组件打成JAR包

    在项目开发过程中,我们难免会用到自己去制作自定义的VIEW控件,之后我们别的项目如果需要的话就直接将其复制到对应的项目中使用,虽说这么做是一个解决问题的方法,但毕竟不是很好. 原因是,当我们项目积累越 ...

最新文章

  1. RobotFramework下的http接口自动化Set Request Body 关键字的使用
  2. 更新pcb封装导入_PCB中3D应用相关功能详解
  3. 重磅丨英伟达刚刚发布全球最大GPU:GTC2018黄仁勋演讲核心内容整理
  4. 模板类中使用友元函数的方式,派生类友元函数对基类的成员使用情况
  5. 思维导图 - 测试技术扩展:Postman接口测试、Sonar白盒测试、Sonic移动测试、Python操作FTP服务器
  6. 利用XMLSerializer将对象串行化到XML
  7. [导入]创建DataTable对象
  8. selenium webdirver之ruby-开发ide乱码解决方案
  9. 剑三哪些插件是必备的_盘点那些年用过的神级CAD插件,每一款都舍不得卸载
  10. MOSS 2010:Visual Studio 2010开发体验(13)——列表开发之列表实例
  11. VS编译器常见的问题
  12. html 列表实现展开和收起,实现列表展开收起效果
  13. 制图折断线_cad折断线怎么画,你值得一看的技巧
  14. 二维傅立叶变换和二维傅立叶反变换
  15. ffmpeg一些基本用法
  16. 攻防演练场景中的加密流量检测技术
  17. Fragment already added 问题
  18. 如何读取蓝牙linkkeys值
  19. Bayes | 贝叶斯统计入门杂记
  20. Java8 Stream 中的 reduce() 方法,执行聚合操作

热门文章

  1. 一文秒懂什么是DDoS攻击
  2. 博弈论matlab程序,基于博弈论的频谱分配的matlab程序
  3. 【SCI征稿】Elsevier旗下中科院2区TOP, 仅1周见刊, 6月11日截稿 (文末有好)~
  4. 最热门的IT论坛集合
  5. 服务services
  6. 【181008】VC++ 妙手连珠五子棋源码
  7. Machine Learning课堂笔记之Computing Parameters Analytically
  8. Ubuntu开发环境搭建详细笔记
  9. 方正中间件SOA解决方案(下)
  10. 万物互联,华为云桌面让移动办公更便捷