Hi Josh,

thanks.

As you suggested I defined a special-fixed-component-id for the component and I checked before its rendering (during its own SetupRender) if that id was already present in the document (writer.getDocument().getElementById()). If so I just skipped the render (by returning False) and everything is fine.

However, this solution will not scale easily for different constraints.
Assume for example that you want to force one of the following constraints in the page (not all of them may have real use cases):

- N and only N components of the same type, N > 1
- No components of type X

I guess you can always work with the Document object and look for some IDs (maybe a programmatic way to do that will scale better). Moreover, I noticed that apparently the Document object (writer.getDocument()) provides only two methods to retrieve elements: Element find(String path) [Finds an element based on a path of element names.] Element getElementById(String id) [Tries to find an element in this document whose id is specified.]

and both of them assume that you know precisely what you are looking for, and they cannot use of regexp or similar to specify the id and path params.

BTW (maybe OT)
Can you render a component inside a page or another component that has no template at all?

Something like this.
Container Component Class{

private ContainedComponent myComponent;

@BeginRender
public void render(MarkupWriter markupWriter){
        markupWriter.render( myComponent );
}
}

I tried adding the @Component annotation and returning the object in the different rendering methods, but it didn't work.

Thanks again.
-- Alessio

Reply via email to