How to access a page property via macro
Asked by Adolfo Casari:

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

Is this possible?


Answers:
author: Davin Studer
body: 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")
```

comments: author: Adolfo Casari
body: Thanks. myProperty would be set according to <https://confluence.atlassian.com/display/DOC/Page+Properties+Macro> (like Deadline in the example in that page), right?


author: Davin Studer
body: 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.


author: Adolfo Casari
body: $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.


author: Cyrille Martin
body: Adolfo did you succeed in retreiving page properties in a User macro ?


author: Adolfo Casari
body: Yes.


author: Olaf Kueppers
body: @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


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


author: Olaf Kueppers
body: 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!


author: Adolfo Casari
body: 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.


author: Michael Howard
body: Thanks David, this worked for me.


author: Chris Amos
body: 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.

TA

Chris

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


Tags: user-macro