renderConfluenceMacro - xhtml-macro - Confluence 4.*


I already had a look at these questions, without a clear answer for my issue:

I am developing a Confluence plugin for the latest version 4.3-RC1 (the question should apply to all 4.* Confluence versions). Rendering the Macro inside the Wysiwyg-Editor works fine. However, I can't find a way to embedd the macro inside of my .vm template. In previous Confluence versions, this was achieved by the #renderConfluenceMacro function. I can't get this function working with my xhtml-macro, I only get the error "unknown macro".

However, rendering a built-in Confluence macro like "loremipsum" with #renderConfluenceMacro("{loremipsum}") works fine.

So, how can I render a macro within a .vm template in Confluence 4.*? In atlassian-plugin.xml, my macro is defined as follows:

<xhtml-macro name="scevents" class="" key="scevents">

       		&lt;parameter name="limit" type="string" /&gt;

I also tried the approach using the XhtmlContent Interface as specified in one of the above questions:

$xhtmlContent.convertWikiToView("{scevents}", null, null)

The $xhtmlContent is a DefaultXhtmlContent instance. This call just gives me a NullPointerException using the two null-parameters.

I appreciate any help, since this is a fairly important plugin for us.

Felix Grund [Scandio GmbH]

1 answer

1 accepted

2 votes
Accepted answer

Hi Felix,

XHTML Macro s can not be rendered with $action.getHelper().renderConfluenceMacro("...").

To render your macro, you must inject the XhtmlContent-Interface in your action.

After that, you can render the macro with following call:

$xhtmlContent.convertStorageToView("<ac:macro ac:name=\"Example Macro\" />", null)

When you use that in velocity template the return is a escaped string.

In my case i add a new function to my action called getMacroAsHtml() and put an @HtmlSafe above.

So i get an unescaped html string.

I hope that this comment proves helpful.

Markus Weigelt [Communardo Software GmbH]

Hi Markus,

thank you very much for your reply. When I was searching for a solution to my problem, I ended up migrating my macro according to this guide. At first sight, however, your solution seems to be more elegant. I'm going to look at it again when the issue occurs next time.

Felix [Scandio GmbH]

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted Feb 06, 2019 in Confluence

Try out the new editing experience

Hi team, I’m Avinoam, a product manager on Confluence Cloud, and today I’m really excited to let the Community know that all customers can now try out the new editing experience and see some of the ...

1,118 views 59 8
Join discussion

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