How to get page id in Confluence programmatically?
The answer to that depends on where you are starting from! Imagine asking someone "how do I get to London?". When they don't know where you are now.
Where is your code running basically? A script? A user macro? A search result function? An add-on that's adding some form of interface (like the admin fuctions)? Another way to ask that is "in what context"?
To the macro Java code:
<macro name='grid-user-timesheet' class='${project.groupId}.GridEditorUserMain' key='agile-application-stack-user'> <description>Creates a editable Timesheet to Confluence Page.</description> <resource type="velocity" name="help" location="templates/extra/editor/grideditoruser-help.vm"> <param name="help-section" value="advanced"/> </resource> </macro>
So, this is an add-on for Confluence that provides a macro?
From memory, there should be a "context" variable, which gets an id via context.entity.id
Yes this is an Add-on for Confluence.
Hi Matti,
did you figure this one out? I have the same challenge, getting the page ID in a plugin macro. How can I retrieve it in the Java class file?
Best regards,George
Edit: Sorry, this should have been a reply to the first answer.
Here is how I was able to resolve this:
import com.atlassian.confluence.core.ContentEntityObject;import com.atlassian.confluence.content.render.xhtml.ConversionContext;...public class MyClass (... ... public String execute(... ContentEntityObject contentEntityObject = conversionContext.getEntity(); System.out.println("pageId : " + contentEntityObject.getId()); ... }}
Hi, George!
Could you show the whole code of page id execution, please?
Here is a template that might help:
public String execute(Map<String, String> map, String body, ConversionContext conversionContext) throws MacroExecutionException { pageBuilderService.assembler().resources().requireWebResource("com.xxx.confluence.plugins.myplugin:webresources"); AttachmentManager attachmentManager = (AttachmentManager) ContainerManager.getComponent("attachmentManager"); // // Get page ID // ContentEntityObject contentEntityObject = conversionContext.getEntity(); Long contentId = contentEntityObject.getId(); String pageId = contentId.toString(); // // Get Base URL // BootstrapManager bootstrapManager = (BootstrapManager) ContainerManager.getComponent("bootstrapManager"); String baseUrl = bootstrapManager.getBaseUrl(); // // Build output and return it // String output = "<p>Page ID: " + pageId + "</p><p>Base URL: " + baseUrl + "</p>"; return output;}
George, thank you very much! you are my hero!
It looks like you're new here. Sign in or register to get started.