[Seaside-dev] Automatic registration of children?

Julian Fitzell jfitzell at gmail.com
Wed Aug 18 12:50:08 UTC 2010


Hi Nicolas,

I've often tried to think of something like this to remove the need
for #children. The problem is that #children is used to support
#updateRoot:, #updateUrl:, both of which happen (more or less by
necessity, at least if you want to support streaming content) before
rendering.

I've thought of having maybe a dummy rendering context so you could do
a fake render pass to collect the children before doing the real
rendering. I think this would work as long as the rendering was
side-effect free (it's supposed to be anyway) but I'm not sure what
the performance overhead would be. The stream output operations would
be no-ops, but any other computation, database access, etc. would
still end up being performed a second time.

Julian

2010/8/13 Nicolas Petton <petton.nicolas at gmail.com>:
> Hi,
>
> Maybe I don't know Seaside enough and the following doesn't make sense,
> but just in case..
>
> Back when I was playing around with Seaside, I always found quite
> annoying to have to implement #children everywhere in my components and
> feared to break the back button somewhere.
>
> We recently needed a #children like method in Iliad, so I thought about
> other ways to do it.
>
> The idea is to use a dynamic variable (let's call it
> WACurrentComponent). When rendering a component, we register can
> children with something like:
>
> renderOn: aRenderer
>    self withChildrenRegistrationDo: [
>        ...
>        ...]
>
> withChildrenRegistrationDo: aBlock
>    children := OrderedCollection new.
>    WACurrentComponent value ifNotNil: [:parent |
>        parent registerChild: self].
>    WACurrentComponent use: self during: aBlock
>
> registerChild: aComponent
>    children add: aComponent
>
>
> As I said, it works fine for us but maybe it won't for Seaside :)
>
> Cheers!
> Nicolas
>
> _______________________________________________
> seaside-dev mailing list
> seaside-dev at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>
>


More information about the seaside-dev mailing list