Hi Warren,
The way I normally handle this situation is to create a javascript
emitting behaviour that is attached to the container. This behaviour
will emit the necessary javascript method to do what you need to do.
Then for each child component you can use an AttributeModifier to write
their onclick callback to call the custom method being emitted by the
container attached behavior.
All the logic can be handled in the implementation details of the custom
method/Object that was emitted.
To get the "onclick" actions emitted before the rendering phase either
include it within the container.onBeforeRender() method, to call the
visitChildren method, or perhaps within your behavior override the
AbstractBehavior.beforeRender(Component c) method.
I've written something like this for a table of check boxes where each
column header is a radio button. Selecting column 2's radio button
causes all of the check boxes in column 1 to become disabled and all the
check boxes in column 2 to become enabled. In my case I made the
behaviour aware of the components in each column and then during
rendering the javascript it writes out an array of markup id's for each
table column.
But if you don't have the child components in scope when adding the
behavior to the container adding the child behaviors before rendering
starts should let things work.
Regards,
Mike
I have that figured out, I just don't know how to add the attribute to
each component. I can't add a behavior, since "Cannot modify component
hierarchy after render phase has started (page version cant change
then anymore)" Can I even do this in a behavior?
Cemal Bayramoglu wrote:
Warren,
See MarkupContainer#visitChildren
Regards - Cemal
jWeekend
OO & Java Technologies, Wicket
Consulting, Development, Training
http://jWeekend.com
On 15 April 2010 18:44, Warren Bell <[email protected]> wrote:
Is there a way to add attributes to child components in a behavior that
is added to a page? I want to create a behavior that is added to a page
that adds some js to the header and then adds some js in an onfocus
attribute of each child form component on the page. I have the list of
child form components, but can't figure out how to add the attribute to
the components.
Warren
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]