What is your use case? Why do you want to do that?
Juergen
On 8/16/06, Petr Sakar <[EMAIL PROTECTED]> wrote:
> Hello,
> can you please give some hint how to create component, which does not nead
> markup and to which I can add children ?
> The intent is to be able create pages without need to create html for such
> pages at all - basically rendering driven by component structure and not
> by markup.
>
> I've tryied it like following and it is working for me now, but most
> probably there is better / more elegant way or some problem I do not see.
>
>
> Thank you in advance for any hints and comments.
>
> saki
>
>
>
> public class Panel extends WebMarkupContainer
> {
>
> ...
>
> /**
> * Renders this container.
> */
> protected void onRender(MarkupStream markupStream)
> {
> Response response = getResponse();
> boolean writeTag = !getRenderBodyOnly();
> if (writeTag) {
> response.write(markupStream.get().toCharSequence());
> }
> layoutManager.startLayout(response);
>
>
> int currentIndex = markupStream.getCurrentIndex();
> int iteration = 0;
> // Iterate through children on this container
> for (Iterator iterator = iterator(); iterator.hasNext();)
> {
> iteration ++;
> // Get next child component
> final Component component = (Component)iterator.next();
>
> if (component == null)
> {
> throw new WicketRuntimeException(
> "Loop item is null. Probably
> the number of loop iterations were
> changed between onBeginRequest and render time.");
> }
> layoutManager.startLayout(response, component);
>
> // Rewind to start of markup for kids
> markupStream.setCurrentIndex(currentIndex);
> if (component instanceof Panel) {
> component.render(markupStream);
> } else if (component instanceof
> WebMarkupContainerWithAssociatedMarkup) {
> WebMarkupContainerWithAssociatedMarkup
> markupContainer =
> (WebMarkupContainerWithAssociatedMarkup) component;
> markupContainer.renderAssociatedMarkup("panel",
> "exceptionMessage");//(" saki exceptionMessage");
> } else if (component instanceof MarkupContainer) {
> MarkupContainer markupContainer =
> (MarkupContainer) component;
> MarkupStream markupStream2 =
> getApplication().getMarkupCache().getMarkupStream(markupContainer);
> component.render(markupStream2);
> } else {
> component.render();
> }
> layoutManager.endLayout(response, component);
> }
> layoutManager.endLayout(response);
>
>
>
> markupStream.setCurrentIndex(currentIndex);
> while (!markupStream.atCloseTag())
> markupStream.next();
> if (writeTag) {
> response.write(markupStream.get().toCharSequence());
> }
> }
>
> ...
>
> }
>
>
>
> Notes:
> - layoutManager is just just to write some markup around children (for
> example table)
> - html files must be created for components whose markup is normally in
> parent component (eg. TextField, Form, ...).
>
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Wicket-develop mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-develop
>
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Wicket-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-develop