It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

How to access a page property via macro

I need to access a page property via a (user) macro.

Is this possible?

1 answer

1 accepted

1 vote
Answer accepted
Davin Studer Community Leader Jan 28, 2015

Is this what you are looking for?

#set ($containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager'))
#set ($getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null))
#set ($containerManager=$getInstanceMethod.invoke(null,null))
#set ($containerContext=$containerManager.containerContext)
#set ($contentPropertyManager=$containerContext.getComponent('contentPropertyManager'))
$contentPropertyManager.setStringProperty($content, "myProperty", "Stuff")
$contentPropertyManager.getStringProperty($content, "myProperty")

Thanks. myProperty would be set according to (like Deadline in the example in that page), right?

Davin Studer Community Leader Jan 28, 2015

Ah ... got it. You are looking for how to access values within a page properties macro. Not sure you could do it with a user macro. Mainly it is for paring with the page properties report macro.

$content is a reference to the current page objet? Your code showed me how to move forward. In my scenario myProperty is a JIRA issueId associated with a page that display info about that issue.

Adolfo did you succeed in retreiving page properties in a User macro ?

@Adolfo: I also want to display values located in the page properties macro of the current page. Would you mind posting a code snippet of your successful approach here? i take it that Davin pointed you in the right direction but you had to develop the final thing? I would be very interested in what you ended up with. Thanks in Advance

You just need the last two lines of the snippet above. The first one to set a property and the second to read it.

Thanks for the information. i tried it but didnt get any results regarding access to values inside the page properties macro on the same page (i assume that is what you originally asked about?) I guess i need to ask that specific question on my own, huh? :-) Thanks anyway!

That snippet is not for set/get Page Properties macro values, it's for your own values than can be set with a user macro and read within another. I used it to set a JIRA issueid to a confluence page and then use that issueid to query jira with a jiraissue macro.

Thanks David, this worked for me.

Sorry for the newbie question, how would I integrate this, I seem to have the option of a user macro, a macro plugin or a full blown macro.

I have documents with a page property block with things like version and document number.

I want to have the document number and version in a footer.

It would seem a generic macro that just takes one parameter, the name of the property would do.

  $contentPropertyManager.getStringProperty($content, parameter1)

I need to can the solution and pass it to general purpose IT department to install.



BTW: Am I missing the point, this is such an obvious thing to want to do, is it built in and I missed it?

Suggest an answer

Log in or Sign up to answer
This widget could not be displayed.
This widget could not be displayed.
Community showcase
Published Thursday in Confluence

Confluence CVEs and common questions

Two vulnerabilities have been published for Confluence Server and Data Center recently: March 20, 2019 CVE-2019-3395 / CVE-2019-3396 April 17, 2019 CVE-2019-3398 The goal of this article is...

114 views 0 10
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you