You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Colin Rogers <Co...@objectconsulting.com.au> on 2012/11/26 00:28:29 UTC

Cloneing Wicket Objects

Wicketeers,

I was wondering what the best was to duplicate or clone wicket components. I need guidance as to the best way to do this.

I have, on my screen two 'navigation panels' that are identical - one at the top of the page, another at the bottom. They contain dropdown choice fields that, when 'onchange' event occurs, it triggers an ajax request that redirects the user to another page.

As, in order to create the navigation panels - I have to visit the DB, and create them dynamically, so it doesn't make sense to perform this operation twice. Also they generate a large amount of HTML, in order render them, so it seems sensible to do as much as I can on the client side.

The idea was - I generate the components once, and then clone them on the client side. This saves going to the DB twice and rendering them twice. I've attempted to use jquery's clone function as; clone(), clone(true) and clone(true, true) - but none work. The elements are copied, but the ajax actions never execute onchange.

Is there another way to do this that works? A more wicket-centric way?

Cheers,
Col.


EMAIL DISCLAIMER This email message and its attachments are confidential and may also contain copyright or privileged material. If you are not the intended recipient, you may not forward the email or disclose or use the information contained in it. If you have received this email message in error, please advise the sender immediately by replying to this email and delete the message and any associated attachments. Any views, opinions, conclusions, advice or statements expressed in this email message are those of the individual sender and should not be relied upon as the considered view, opinion, conclusions, advice or statement of this company except where the sender expressly, and with authority, states them to be the considered view, opinion, conclusions, advice or statement of this company. Every care is taken but we recommend that you scan any attachments for viruses.

RE: Cloneing Wicket Objects

Posted by Colin Rogers <Co...@objectconsulting.com.au>.
Martin,

For some reason JQuery clone doesn't work - even with the withDataAndEvents and deepWithDataAndEvents flags set to true... :/

But - thank you for your suggestion - sounds just the thing - will give it a spin tonight :)

Cheers,
Col.

-----Original Message-----
From: Martin Grigorov [mailto:mgrigorov@apache.org]
Sent: Monday, 26 November 2012 7:33 PM
To: users@wicket.apache.org
Subject: Re: Cloneing Wicket Objects

Hi,

You cannot add a component twice. A component can have just one parent.

I think jQuery clone() should work, but I'm not totally sure.

You can use WicketObjects#clone() method to clone any kind of Object. It uses Java Serialization to do it.
Just make sure you clone it before adding the component to its parent, because the relation will be cloned too.


On Mon, Nov 26, 2012 at 12:53 AM, Paul Bors <pa...@bors.ws> wrote:

> Can't you crate the "navigation panel" once and call add() on it twice
> by passing the same reference to it from within your page hierarchy?
>
> On the client side I don't see why you would push this cloning to the
> client. Just let the page contain the same panel (html/js) via a
> single reference.
> You should be fine as long as you handle the db trip in the
> constructor or your own "init()" method.
>
> ~ Thank you,
>   Paul Bors
>
> -----Original Message-----
> From: Colin Rogers [mailto:Colin.Rogers@objectconsulting.com.au]
> Sent: Sunday, November 25, 2012 6:28 PM
> To: users@wicket.apache.org
> Subject: Cloneing Wicket Objects
>
> Wicketeers,
>
> I was wondering what the best was to duplicate or clone wicket components.
> I
> need guidance as to the best way to do this.
>
> I have, on my screen two 'navigation panels' that are identical - one
> at the top of the page, another at the bottom. They contain dropdown
> choice fields that, when 'onchange' event occurs, it triggers an ajax
> request that redirects the user to another page.
>
> As, in order to create the navigation panels - I have to visit the DB,
> and create them dynamically, so it doesn't make sense to perform this
> operation twice. Also they generate a large amount of HTML, in order
> render them, so it seems sensible to do as much as I can on the client side.
>
> The idea was - I generate the components once, and then clone them on
> the client side. This saves going to the DB twice and rendering them twice.
> I've
> attempted to use jquery's clone function as; clone(), clone(true) and
> clone(true, true) - but none work. The elements are copied, but the
> ajax actions never execute onchange.
>
> Is there another way to do this that works? A more wicket-centric way?
>
> Cheers,
> Col.
>
>
> EMAIL DISCLAIMER This email message and its attachments are
> confidential and may also contain copyright or privileged material. If
> you are not the intended recipient, you may not forward the email or
> disclose or use the information contained in it. If you have received
> this email message in error, please advise the sender immediately by
> replying to this email and delete the message and any associated
> attachments. Any views, opinions, conclusions, advice or statements
> expressed in this email message are those of the individual sender and
> should not be relied upon as the considered view, opinion,
> conclusions, advice or statement of this company except where the
> sender expressly, and with authority, states them to be the considered
> view, opinion, conclusions, advice or statement of this company. Every
> care is taken but we recommend that you scan any attachments for viruses.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>


--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>
EMAIL DISCLAIMER This email message and its attachments are confidential and may also contain copyright or privileged material. If you are not the intended recipient, you may not forward the email or disclose or use the information contained in it. If you have received this email message in error, please advise the sender immediately by replying to this email and delete the message and any associated attachments. Any views, opinions, conclusions, advice or statements expressed in this email message are those of the individual sender and should not be relied upon as the considered view, opinion, conclusions, advice or statement of this company except where the sender expressly, and with authority, states them to be the considered view, opinion, conclusions, advice or statement of this company. Every care is taken but we recommend that you scan any attachments for viruses.

RE: Cloneing Wicket Objects

Posted by Paul Bors <pa...@bors.ws>.
I stand corrected, Martin is right.

We cache our SQL results hence why this is not a problem for us.

~ Thank you,
  Paul Bors

-----Original Message-----
From: Martin Grigorov [mailto:mgrigorov@apache.org] 
Sent: Monday, November 26, 2012 3:33 AM
To: users@wicket.apache.org
Subject: Re: Cloneing Wicket Objects

Hi,

You cannot add a component twice. A component can have just one parent.

I think jQuery clone() should work, but I'm not totally sure.

You can use WicketObjects#clone() method to clone any kind of Object. It uses Java Serialization to do it.
Just make sure you clone it before adding the component to its parent, because the relation will be cloned too.


On Mon, Nov 26, 2012 at 12:53 AM, Paul Bors <pa...@bors.ws> wrote:

> Can't you crate the "navigation panel" once and call add() on it twice 
> by passing the same reference to it from within your page hierarchy?
>
> On the client side I don't see why you would push this cloning to the 
> client. Just let the page contain the same panel (html/js) via a 
> single reference.
> You should be fine as long as you handle the db trip in the 
> constructor or your own "init()" method.
>
> ~ Thank you,
>   Paul Bors
>
> -----Original Message-----
> From: Colin Rogers [mailto:Colin.Rogers@objectconsulting.com.au]
> Sent: Sunday, November 25, 2012 6:28 PM
> To: users@wicket.apache.org
> Subject: Cloneing Wicket Objects
>
> Wicketeers,
>
> I was wondering what the best was to duplicate or clone wicket components.
> I
> need guidance as to the best way to do this.
>
> I have, on my screen two 'navigation panels' that are identical - one 
> at the top of the page, another at the bottom. They contain dropdown 
> choice fields that, when 'onchange' event occurs, it triggers an ajax 
> request that redirects the user to another page.
>
> As, in order to create the navigation panels - I have to visit the DB, 
> and create them dynamically, so it doesn't make sense to perform this 
> operation twice. Also they generate a large amount of HTML, in order 
> render them, so it seems sensible to do as much as I can on the client side.
>
> The idea was - I generate the components once, and then clone them on 
> the client side. This saves going to the DB twice and rendering them twice.
> I've
> attempted to use jquery's clone function as; clone(), clone(true) and 
> clone(true, true) - but none work. The elements are copied, but the 
> ajax actions never execute onchange.
>
> Is there another way to do this that works? A more wicket-centric way?
>
> Cheers,
> Col.
>
>
> EMAIL DISCLAIMER This email message and its attachments are 
> confidential and may also contain copyright or privileged material. If 
> you are not the intended recipient, you may not forward the email or 
> disclose or use the information contained in it. If you have received 
> this email message in error, please advise the sender immediately by 
> replying to this email and delete the message and any associated 
> attachments. Any views, opinions, conclusions, advice or statements 
> expressed in this email message are those of the individual sender and 
> should not be relied upon as the considered view, opinion, 
> conclusions, advice or statement of this company except where the 
> sender expressly, and with authority, states them to be the considered 
> view, opinion, conclusions, advice or statement of this company. Every 
> care is taken but we recommend that you scan any attachments for viruses.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>


--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>


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


Re: Cloneing Wicket Objects

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

You cannot add a component twice. A component can have just one parent.

I think jQuery clone() should work, but I'm not totally sure.

You can use WicketObjects#clone() method to clone any kind of Object. It
uses Java Serialization to do it.
Just make sure you clone it before adding the component to its parent,
because the relation will be cloned too.


On Mon, Nov 26, 2012 at 12:53 AM, Paul Bors <pa...@bors.ws> wrote:

> Can't you crate the "navigation panel" once and call add() on it twice by
> passing the same reference to it from within your page hierarchy?
>
> On the client side I don't see why you would push this cloning to the
> client. Just let the page contain the same panel (html/js) via a single
> reference.
> You should be fine as long as you handle the db trip in the constructor or
> your own "init()" method.
>
> ~ Thank you,
>   Paul Bors
>
> -----Original Message-----
> From: Colin Rogers [mailto:Colin.Rogers@objectconsulting.com.au]
> Sent: Sunday, November 25, 2012 6:28 PM
> To: users@wicket.apache.org
> Subject: Cloneing Wicket Objects
>
> Wicketeers,
>
> I was wondering what the best was to duplicate or clone wicket components.
> I
> need guidance as to the best way to do this.
>
> I have, on my screen two 'navigation panels' that are identical - one at
> the
> top of the page, another at the bottom. They contain dropdown choice fields
> that, when 'onchange' event occurs, it triggers an ajax request that
> redirects the user to another page.
>
> As, in order to create the navigation panels - I have to visit the DB, and
> create them dynamically, so it doesn't make sense to perform this operation
> twice. Also they generate a large amount of HTML, in order render them, so
> it seems sensible to do as much as I can on the client side.
>
> The idea was - I generate the components once, and then clone them on the
> client side. This saves going to the DB twice and rendering them twice.
> I've
> attempted to use jquery's clone function as; clone(), clone(true) and
> clone(true, true) - but none work. The elements are copied, but the ajax
> actions never execute onchange.
>
> Is there another way to do this that works? A more wicket-centric way?
>
> Cheers,
> Col.
>
>
> EMAIL DISCLAIMER This email message and its attachments are confidential
> and
> may also contain copyright or privileged material. If you are not the
> intended recipient, you may not forward the email or disclose or use the
> information contained in it. If you have received this email message in
> error, please advise the sender immediately by replying to this email and
> delete the message and any associated attachments. Any views, opinions,
> conclusions, advice or statements expressed in this email message are those
> of the individual sender and should not be relied upon as the considered
> view, opinion, conclusions, advice or statement of this company except
> where
> the sender expressly, and with authority, states them to be the considered
> view, opinion, conclusions, advice or statement of this company. Every care
> is taken but we recommend that you scan any attachments for viruses.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>


-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>

RE: Cloneing Wicket Objects

Posted by Paul Bors <pa...@bors.ws>.
Can't you crate the "navigation panel" once and call add() on it twice by
passing the same reference to it from within your page hierarchy?

On the client side I don't see why you would push this cloning to the
client. Just let the page contain the same panel (html/js) via a single
reference.
You should be fine as long as you handle the db trip in the constructor or
your own "init()" method.

~ Thank you,
  Paul Bors

-----Original Message-----
From: Colin Rogers [mailto:Colin.Rogers@objectconsulting.com.au] 
Sent: Sunday, November 25, 2012 6:28 PM
To: users@wicket.apache.org
Subject: Cloneing Wicket Objects

Wicketeers,

I was wondering what the best was to duplicate or clone wicket components. I
need guidance as to the best way to do this.

I have, on my screen two 'navigation panels' that are identical - one at the
top of the page, another at the bottom. They contain dropdown choice fields
that, when 'onchange' event occurs, it triggers an ajax request that
redirects the user to another page.

As, in order to create the navigation panels - I have to visit the DB, and
create them dynamically, so it doesn't make sense to perform this operation
twice. Also they generate a large amount of HTML, in order render them, so
it seems sensible to do as much as I can on the client side.

The idea was - I generate the components once, and then clone them on the
client side. This saves going to the DB twice and rendering them twice. I've
attempted to use jquery's clone function as; clone(), clone(true) and
clone(true, true) - but none work. The elements are copied, but the ajax
actions never execute onchange.

Is there another way to do this that works? A more wicket-centric way?

Cheers,
Col.


EMAIL DISCLAIMER This email message and its attachments are confidential and
may also contain copyright or privileged material. If you are not the
intended recipient, you may not forward the email or disclose or use the
information contained in it. If you have received this email message in
error, please advise the sender immediately by replying to this email and
delete the message and any associated attachments. Any views, opinions,
conclusions, advice or statements expressed in this email message are those
of the individual sender and should not be relied upon as the considered
view, opinion, conclusions, advice or statement of this company except where
the sender expressly, and with authority, states them to be the considered
view, opinion, conclusions, advice or statement of this company. Every care
is taken but we recommend that you scan any attachments for viruses.


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