How to get page id in Confluence programmatically?
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?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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"?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes this is an Add-on for Confluence.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That looks right to me. Not tested it, but it should do it.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.