假設您使用的是Confluence服務器,則需要在開發計算機上使用install the Atlassian SDK並創建Confluence add-on。
做完所有這些之後,你應該有一個骨架Confluence插件。
接下來,你需要一個事件偵聽器component
和eventPublisher
component-import
添加到您的atlassian-plugin.xml
文件像這樣:
<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2">
<plugin-info>
<description>${project.description}</description>
<version>${project.version}</version>
<vendor name="${project.organization.name}" url="${project.organization.url}" />
</plugin-info>
<component
key="scroll-versions-event-listener"
class="me.davidsimpson.confluence.addons.example.listener.ScrollVersionsPublishEventListener"
name="Scroll Versions Publish Event Listener"
>
</component>
<component-import key="eventPublisher" interface="com.atlassian.event.api.EventPublisher" />
</atlassian-plugin>
接下來,你需要創建一個事件偵聽器的類文件。這裏有一個出發點:在這個例子中
package me.davidsimpson.confluence.addons.example.listener;
import com.atlassian.event.api.EventPublisher;
import org.springframework.beans.factory.DisposableBean;
public class ScrollVersionsPublishEventListener implements DisposableBean
{
protected final EventPublisher eventPublisher;
public ScrollVersionsPublishEventListener(EventPublisher eventPublisher)
{
this.eventPublisher = eventPublisher;
eventPublisher.register(this);
}
/**
* Unregister the listener if the plugin is uninstalled or disabled.
*/
public void destroy() throws Exception
{
eventPublisher.unregister(this);
}
@com.atlassian.event.api.EventListener
public void onVersionPublishEvent(Object event) {
String eventName = event.getClass().getCanonicalName(); // will work for other people's events, not just Atlassian's
// Spit out all events - just to prove the point
System.out.println(" ++ an event happened: " + eventName);
if (eventName.equals("com.k15t.scroll.platform.event.space.VersionPublishEvent")) {
System.out.println(" ++++ Found the right event ");
// Do your stuff here...
}
}
}
通知,所有事件都打印到控制檯,但我們檢查在這個例子中特定的非標事件。
將if (eventName.equals(...))
更改爲您感興趣的活動,您應該準備好了。
嗨,是否有可能重新呈現一個頁面,如果一個特定的事件發生? – JayBee
請舉例說明你的意思。你的意思是某種客戶端JavaScript事件?還是服務器端的Confluence事件? 正常匯合事件將不會有人在觸發時間打開頁面的概念。 – dvdsmpsn