We're migrating from Confluence 3.5 to Confluence 5 and have a custom macro that renders its body content. We're using <br> tags in the macro body content, and they no longer seem to work (perhaps to prevent injection attacks?). How do I represent a line break in a macro body?
Thanks,
Jim
A big hack, but what worked was splitting the string on the <BR> tag in the Velocity template and putting a <br> after each token.
#if($person.title.contains("<BR>")) #foreach($token in $person.title.split("<BR>")) $token<br> #end #else $!person.title #end
One clarification that I forgot to add was that I am using a Velocity template renderer. I think the appropriate solution may be to follow the example of the com.atlassian.confluence.plugins.expand.ExpandMacro class. I'll try the approach it uses with another macro I need to migrade that uses a Velocity template and post an update here.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Is it possible that the XHTML parser is more strict in Confluence 5? Have you tried closing the <br> tag by making it <br/>?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I'm guessing that's the case (possibly to prevent injection attacks). Unfortunately I had no luck with a <br/> tag either. :-(
Should I file a bug?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Well, they work fine for me in 4.2. Could you post the entire macro so I can see how it's used? Maybe there's some funkyness that I'm not foreseeing...
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.