Almost.... still needs some tweaking:

org.apache.wicket.WicketRuntimeException: Unable to find the markup
for the component. That may be due to transparent containers or
components implementing IComponentResolver: [MarkupContainer
[Component id = -]]
     at 
org.apache.wicket.MarkupFragmentFinder.find(MarkupFragmentFinder.java:125)
     at org.apache.wicket.Component.locateMarkupStream(Component.java:3813)
     at org.apache.wicket.Component.renderComponent(Component.java:2547)

**
Martin

2009/10/30 Martin Makundi <martin.maku...@koodaripalvelut.com>:
> Looking at AjaxRequestTarget, maybe something like this might work?
>
>                // substitute our encoding response for the real one so we can 
> capture
>                // component's markup in a manner safe for transport inside 
> CDATA block
>                final Response originalResponse = response;
>                StringResponse stringResponse = new StringResponse();
>                RequestCycle.get().setResponse(stringResponse);
>
>                // Initialize temporary variables
>                final Page page = component.findParent(Page.class);
>                if (page == null)
>                {
>                        // dont throw an exception but just ignore this 
> component, somehow
>                        // it got
>                        // removed from the page.
>                        // throw new IllegalStateException(
>                        // "Ajax request attempted on a component that is not 
> associated
>                        // with a Page");
>                        LOG.debug("component: " + component + " with markupid: 
> " + markupId +
>                                " not rendered because it was already removed 
> from page");
>                        return;
>                }
>
>                page.startComponentRender(component);
>
>                try
>                {
>                        component.prepareForRender();
>
>                        // render any associated headers of the component
>                        respondHeaderContribution(response, component);
>                }
>                catch (RuntimeException e)
>                {
>                        try
>                        {
>                                component.afterRender();
>                        }
>                        catch (RuntimeException e2)
>                        {
>                                // ignore this one could be a result off.
>                        }
>                        // Restore original response
>                        RequestCycle.get().setResponse(originalResponse);
>                        stringResponse.reset();
>                        throw e;
>                }
>
>                try
>                {
>                        component.renderComponent();
>                }
>                catch (RuntimeException e)
>                {
>                        RequestCycle.get().setResponse(originalResponse);
>                        stringResponse.reset();
>                        throw e;
>                }
>
>                page.endComponentRender(component);
>
>                // Restore original response
>                RequestCycle.get().setResponse(originalResponse);
>
>                return stringResponse.toString();
>
>
> 2009/10/30 Martin Makundi <martin.maku...@koodaripalvelut.com>:
>> Hi!
>>
>> Can a wicket component be rendered to string in the following use case:
>>
>> 1. I have a table (multiple columns and rows). Each row corresponds to
>> a person. The columns could represent for rexample a calendar for the
>> person. Monda, tuesday, etc.
>>
>> 2. For each row, I have summary information. I have a SummaryPanel
>> that can show this information at the footer of the table.
>>
>> 3. In addition to the footer, I would like to show the SummaryPanel
>> contents as a tooltip.
>>
>> 4. I would like to attach the tooltip onto an icon in each column for
>> each row (tooltip content different for different rows, same for
>> different columns on the same row).
>>
>> 5. Ideally I would do like this:
>> populateitem(ListItem item) {
>>  item.add(new Tooltip("tooltip", new AbstractReadOnlyModel<String>()
>> { public String getObject() {  RenderUtils.renderToString(new
>> SummaryPanel("dummy-id"))  } });
>> }
>>
>> I.e., I need to render a panel to a string during an ongoing render.
>>
>> I have found an example for rendering a wicket PAGE
>> * 
>> http://www.danwalmsley.com/2008/10/21/render-a-wicket-page-to-a-string-for-html-email/
>>
>> Note: I need to render just a panel; so I would rather not frame it with a 
>> page.
>>
>> Furthermore, I have found an example about rendering using a new request 
>> cycle:
>> * http://www.mail-archive.com/users@wicket.apache.org/msg22167.html
>>
>> But in my understanding this cannot be done if an ongoing request is
>> being processed?
>>
>> **
>> Martin
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to