Confluence 서버를 사용한다고 가정하면 개발 컴퓨터에서 install the Atlassian SDK이 필요하고 Confluence add-on을 생성해야합니다.
이 모든 작업을 완료하면 골격 Confluence 부가 기능이 있어야합니다.
다음, 당신은 다음처럼 atlassian-plugin.xml
파일에 이벤트 리스너 component
와 eventPublisher
component-import
을 추가해야합니다 :
<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
무슨 뜻인지 예를 들려주세요. 클라이언트 측 자바 스크립트 이벤트를 의미합니까? 아니면 서버 측 Confluence 이벤트입니까? 일반적인 Confluence 이벤트에는 트리거시 누가 페이지를 열 었는지에 대한 개념이 없습니다. – dvdsmpsn