XWiki开发指南3-自定义扩展jar包

article/2025/8/27 13:45:59

简介

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

使用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到前端脚本的流程都打通了。


http://chatgpt.dhexx.cn/article/SEoxxLpy.shtml

相关文章

xwiki部署_开源Wiki应用平台---XWiki的部署

部署所需要做的工作&#xff1a; 1.安装好MySQL(这里使用的是MySQL5.6.23)&#xff0c;修改MySQL的my.ini配置文件(我的是手动安装版&#xff0c;所以在MySQL的安装目录 下)&#xff0c;在[mysqld]下添加以下配置&#xff1a; max_allowed_packet32M 这里是为了增大mysql serve…

XWIKI的搭建

原文地址&#xff1a;https://my.oschina.net/gywbest/blog/780569 一 应用背景描述 在平时的运维工作中&#xff0c;把常规工作进行文档整理非常重要&#xff0c;无论是平时工作处理或是工作交接&#xff0c;实时的维护文档资料可以提高工作效率。如果采用传统的TXT文档或者Wo…

xwiki部署_xwiki8.2.1安装部署

系统环境centos 6.5 实现方式&#xff1a;xwikinginxtomcatmysql 包获取&#xff1a;http://www.xwiki.org/xwiki/bin/view/Main/Download 版本&#xff1a;xwiki8.2.1 nginx 随意 jdk&#xff1a;必须1.8 tomcat&#xff1a;7或者以上 mysql&#xff1a;5.5或者以上 nginx、jd…

xwiki部署_Linux下Xwiki安装部署详解

一、Xwiki简介 XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。XWiki是一款基于java所编写的wiki&#xff0c;它可以运行在如Tomcat&#xff0c;Jetty&#xff0c;JBoss&#xff0c;WebLogic&#xff0c;WebSphere等Servlet容器上并利用关系型数据库(HSQL, MyS…

xwiki部署_xwiki 搭建心得

吐个槽可忽略 这几天不是接到个新活&#xff0c;要把 xwiki 融合到我们的项目里&#xff0c;于是我找到原来负责修改 xwiki 界面的同事&#xff0c;让他把代码给我。等我拿到手一看&#xff0c;我的内心几乎是崩溃的&#xff0c;竟然没有做代码版本控制&#xff0c;全部在初始文…

xwiki

下载war放到tomcat的webapps目录下&#xff1a; http://nexus.xwiki.org/nexus/content/groups/public/org/xwiki/platform/xwiki-platform-distribution-war/11.10.3/xwiki-platform-distribution-war-11.10.3.war 安装参考&#xff1a; https://juejin.im/post/5c1466d0f265…

xwiki使用指南

修改配置&#xff0c;启动超级管理员&#xff0c;启用默认语言。实现汉化&#xff0c;设置权限&#xff0c;禁止外部注册&#xff0c;设置邮箱激活&#xff0c;修改管理员密码&#xff0c;加入新用户。 1.启动超级管理员&#xff0c;编辑xwiki.cfg文件vim /usr/local/XWiki/web…

基于xwiki部署企业内部知识管理平台

1. Xwiki介绍 印象笔记、有道笔记、为知笔记都是挺好的商用笔记知识管理软件&#xff0c;不过有些敏感文件是不太好放到互联网上的。 所以搭建一套内部局域网知识管理平台是非常有意义的&#xff0c;在开源Wiki系统中&#xff0c;XWiki是做的最好的产品之一。因为它提供的功能…

xwiki初步认识

1、xwiki安装 下载xwiki的war包&#xff0c;tomcat&#xff0c;mysql&#xff0c;各自安装配置好。在mysql中建好xwiki库&#xff0c;将war包放入tomcat中&#xff0c;在解压出来的文件中修改hibernate.cfg.xml的数据库连接配置&#xff0c;如2、字符集更改的图中。注意删除war…

Xwiki安装部署详解

一、Xwiki简介XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。XWiki是一款基于java所编写的wiki&#xff0c;它可以运行在如Tomcat&#xff0c;Jetty&#xff0c;JBoss&#xff0c;WebLogic&#xff0c;WebSphere等Servlet容器上并利用关系型数据库(HSQL, MySQ…

xwiki安装部署

xwiki 下载&#xff0c;版本选择以及与jdk&#xff0c;servlet容器&#xff0c;数据库和JDBC的版本对应关系&#xff0c;可以参考我另一篇关于这个的文章 https://blog.csdn.net/qq_38417282/article/details/125271765 首先进入xwiki官网 在documentation中找到Admin Guide—…

设计模式之装饰器模式详解

设计模式之装饰器模式详解 文章目录 设计模式之装饰器模式详解一、什么是装饰器模式二、装饰器模式的角色组成三、装饰器模式通用写法示例四、装饰器模式业务中的应用举例五、装饰器模式优缺点 一、什么是装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09; 也称…

TS装饰器

通过本文你可以知道什么 装饰器的发展历程JS和TS装饰器有何不同Angular中的装饰器到底是什么装饰器的定义&#xff0c;语法&#xff0c;作用reflect-meta是什么及如何使用 前言 我们平常开发中或多或少的听说或使用过装饰器&#xff0c;也切身感受到了它带给我们的便利。但是…

python的装饰器(函数装饰器)

作为许多语言都存在的高级语法之一&#xff0c;装饰器是你必须掌握的知识点。 装饰器&#xff08;Decorator&#xff09;&#xff1a;从字面上理解&#xff0c;就是装饰对象的器件。可以在不修改原有代码的情况下&#xff0c;为被装饰的对象增加新的功能或者附加限制条件或者帮…

python装饰器这一篇就够了

前言 什么是装饰器 实现原理 实现效果 适用场景 装饰器&#xff1a; 装饰器的写法 装饰器的拓展 装饰器的模板 什么是装饰器呢&#xff1f; 就是在特定条件下为某些函数再不改动函数体的时候为函数新添加一些功能&#xff0c;这就是装饰器 实现原理&#xff1a; …

【Python】闭包与装饰器

1.闭包 闭包的本质就是函数的嵌套定义&#xff0c;即在函数内部再定义函数 闭包有两种不同的方式&#xff0c;第一种是“返回一个函数名称”&#xff0c;第二种是在函数内部就“直接调用” 闭包的定义&#xff1a;在一个外函数中定义了一个内函数&#xff0c;内函数里运用了…

Python装饰器的通俗理解

看了这篇文章终于搞懂了装饰器&#xff0c;原文有少许错误&#xff0c;但无伤大雅&#xff0c;改正后转载于此&#xff0c;一起学习。 在学习Python的过程中&#xff0c;我相信有很多人和我一样&#xff0c;对Python的装饰器一直觉得很困惑&#xff0c;我也是困惑了好久&#x…

什么是装饰器?

一、引出装饰器概念 引入问题&#xff1a; 定义了一个函数&#xff0c;想在运行时动态的增加功能&#xff0c;又不想改动函数本身的代码&#xff1f; 示例&#xff1a; 希望对下列函数调用增加log功能&#xff0c;打印出函数调用&#xff1a; def f1(x): return x*2 d…

Python自定义装饰器

文章目录 1.闭包2.不带参数的装饰器3.带参数的装饰器4.不定长参数的装饰器5.多重装饰器修饰6.返回值是装饰器7.装饰器类 Python学习笔记—装饰器 装饰器&#xff1a;从生活角度理解&#xff0c;是对一个东西进行装饰&#xff0c;增加它本身的一些功能和内容&#xff1b; Python…

Python的装饰器

前言&#xff1a; &#x1f921; 作者简介&#xff1a;我是Morning&#xff0c;计算机的打工人&#xff0c;想要翻身做主人 &#x1f648; &#x1f648; &#x1f648; &#x1f3e0; 个人主页&#xff1a;Morning的主页 &#x1f4d5;系列专栏&#xff1a;&#…