How can I use setBodyAsString() in a plugin to insert new parameters in macros in pages without rendering?

raik schubel December 6, 2012

I read a confluence page and the content:

Page   targetPage = getPageManager().getPage(spaceName, pageName);

String contentStr = targetPage.getContentEntityObject().getBodyAsString();

contentStr  = StringEscapeUtils.unescapeHtml(contentStr);

// insert a new parameter in the contentStr with macro ...

// the content of the page is

<ac:macro ac:name="mname">
<ac:parameter ac:name="Titel">Title 1</ac:parameter>
<ac:parameter ac:name="Content"><br/>
<ac:macro ac:name="panel">
<ac:parameter ac:name="borderColor">darkblue</ac:parameter>
<ac:parameter ac:name="borderWidth">1</ac:parameter>
<ac:parameter ac:name="bgColor">lightblue</ac:parameter>
<ac:rich-text-body><ac:macro ac:name="unmigrated-wiki-markup"><ac:plain-text-body><![CDATA[ {color:darkblue} Makro noch nicht migriert:{color} {Name|Link} ]]></ac:plain-text-body>
                   </ac:macro></ac:rich-text-body>
</ac:macro> 
<ac:macro ac:name="add-label"><ac:parameter ac:name="labels">manuelle-migration</ac:parameter></ac:macro> <br/>
</ac:parameter>
<ac:parameter ac:name="Herausgeber">XXX</ac:parameter>
</ac:macro>

// save the new content

targetPage.setBodyAsString(content);

// after save ist the parameter "Content" in the macro empty:
// <ac:parameter ac:name="Content"/> !!!

What can I do? There is a macro with a CData in the param content!!!

1 answer

0 votes
raik schubel December 6, 2012

I use confluence 4.1.2

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events