I've added a wiki page here http://wiki.apache.org/tapestry/Tapestry5HowToGetAnHTMLStringFromARenderCommandParameter
On Wednesday, 14 March 2012, Lenny Primak <lpri...@hope.nyc.ny.us> wrote: > Can you put this up in the Tapestry Wiki? > It's trivial to do and IMHO very useful > On Mar 14, 2012, at 8:11 AM, Lance Java wrote: > >> Hi people, there have been a few threads around lately about getting the >> HTML string from a block / render command on the serverside including: >> >> http://tapestry.1045711.n5.nabble.com/Rendering-components-in-Alerts-td5543434.html >> http://tapestry.1045711.n5.nabble.com/How-does-MultiZoneUpdateEventResultProcessor-get-a-html-string-from-a-RenderCommand-td5518968.html >> >> http://tapestry.1045711.n5.nabble.com/tml-parameter-rendered-into-a-JavaScript-string-td5512889.html >> >> I have come up with what I think to be the most elegant solution. >> >> Please find below the source for a component which does the following: >> 1. Takes a count parameter and a render command parameter >> 2. For each count, updates a "current" property which can be referenced by >> the render command and adds the render command to the render queue >> >> 3. Removes the elements from the DOM in @AfterRender and uses the HTML in a >> javascript alert >> >> Page.html >> ======= >> <t:tmlToString t:count="5" t:id="tmlToString"> >> <p:renderMe> >> <div>foo ${tmlToString.current} bar</div> >> </p:renderMe> >> </t:tmlToString> >> >> Page.java >> ======= >> @InjectComponent >> @Property >> private TmlToString tmlToString; >> >> >> TmlToString.java >> ============ >> public class TmlToString { >> @Parameter >> @Property >> private RenderCommand renderMe; >> >> @Property >> @Parameter(defaultPrefix=BindingConstants.LITERAL, required=true) >> private int count; >> >> @Property >> private int current; >> >> @Inject >> private JavaScriptSupport javaScriptSupport; >> >> private Element wrappingDiv; >> >> @BeginRender >> RenderCommand beginRender() { >> return new RenderCommand() { >> public void render(MarkupWriter writer, RenderQueue >> queue) { >> wrappingDiv = writer.element("div"); >> List<RenderCommand> commands = new >> ArrayList<RenderCommand>(); >> for (int i = 0; i < count; ++ i) { >> final int finalI = i; >> commands.add(new RenderCommand() { >> public void >> render(MarkupWriter writer2, RenderQueue queue2) { >> current = finalI; >> >> queue2.push(renderMe); >> --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > >