The key, as others have alluded to and you discovered yourself, is that
setting a component's visibility to false will cause that component to not
be rendered. I know in the back of some people minds (mine included) we
think "invisible means it's there, we just can't see it). Well, in this case
invisible means it's not rendered at all. This is all just semantics until
you try to change that visibility on the client side (i.e. AJAX). Since it's
not there to being with, you can't really do client side modifications of
it. 

So, as Michael pointed out, you can instead put what you want to make
invisible inside a container and then use the Ajax functionality to update
that container and not the invisible item itself. The container will be
re-rendered and now that the internal item is set to "visible" it will be
rendered right along with its parent container.

Matt
----------------------


Michael Sparer wrote:
> 
> put the panel in an additional container and add this container
> 
> WebmarkupContainer div = new WebmarkupContainer("cont");
> div.setOutputMarkupId(true);
> div.add(registeredUserPanel.setVisible(false));
> 
> then in the onclick stuff
> registeredUserPanel.setVisible(true);
> target.addComponent(div);
> 
> that should do the trick
> 
> hth,
> michael
> 
> 
> rjilani wrote:
>> 
>> Hi: Gurus I am trying to make an invisible panel visible via Ajax link,
>> but got stuck at a point where I don't know how to proceed further.
>> Please see the code snipet below
>> 
>> final RegisteredUserPanel registeredUserPanel = new
>> RegisteredUserPanel("registrationPanel");
>>         
>>         add(registeredUserPanel);
>>         registeredUserPanel.setOutputMarkupId(true);
>>         registeredUserPanel.setVisible(false);
>> 
>> add(new AjaxLink("registerLink") {
>> 
>>             @Override
>>             public void onClick(AjaxRequestTarget target) {
>>                 registeredUserPanel.setVisible(true);
>>                 target.addComponent(registeredUserPanel);
>>             }
>>         });
>> 
>> the problem is that when I call registeredUserPanel.setVisible(false),
>> becuase by defualt I don't want this pannel to be visible; the wicket
>> don't render the html markup for the pannel at all and hence the ajax
>> calls fails becuase it don't find the markup to render the panel. Any
>> suggestions how to tackle a situation like this.
>> 
>> Regards,
>> RJ
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Making-an-invisible-panel-visible-via-AjaxLink-tp22103906p22104664.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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

Reply via email to