See
http://tapestry.1045711.n5.nabble.com/Getting-the-HTML-markup-string-from-a-RenderCommand-td5564418.html

On Friday, 24 February 2012, Lance Java <lance.j...@googlemail.com> wrote:
> I am writing a google maps component which can display markers on a map,
each marker has an info window when it is clicked on. I'd like to pass a
parameter to the component containing the tml to render each marker's info
window.
>
> eg:
>
> Page.java
> ========
> @InjectComponent
> @Property
> GoogleMap mygooglemap
>
> public List<GoogleMapMarker> getMarkers() {
>    ...
> }
>
> Page.tml
> ============
> <t:googlemap markers="markers" t:id="mygooglemap">
>    <p:infowindow>
>       <div
style="infowindow-title">${mygooglemap.currentmarker.data.title}</div>
>       <div
style="infowindow-body">${mygooglemap.currentmarker.data.body}</div>
>    </p:infowindow>
> </t:googlemap>
>
> The only thing is that the google maps api wants each marker's infowindow
html to be a javascript string so I somehow need to use tapestry's template
engine to generate strings for each marker's infowindow which I can then
use to generate javascript.
>
> I have seen that the new Tree component can accept a "label" property
which allows the user to provide a custom template for rendering each
label. The label parameter is of type RenderCommand and RenderCommand has a
single method:
>
>     void render(MarkupWriter writer, RenderQueue queue);
>
> So, I was hoping that I could do the same sort of thing except that
instead of rendering to the response MarkupWriter, I could pass an empty
MarkupWriter to this method and then extract the generated markup somehow
into a string to then use it to generate my javascript.
>
> Has anyone done this sort of thing before?
> Am I on the right track or is there a simpler way?

Reply via email to