You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Patrick Davids <pa...@nuboit.de> on 2013/03/28 14:36:39 UTC

Solved / Re: Need help setting visibility via AjaxFormChoiceComponentUpdatingBehavior

I am not sure what exactly was wrong.
Perhaps I had too much code with several active setVisibility...() XYZs 
code parts.

I started from the beginning and found the beautiest way for me, looking 
like this.

final RadioChoice<String> r = new RadioChoice<String>("id", 
Model.of(""), Arrays.asList(new String[{"visible","invisible"}));

r.setModelObject("visible");
		
final WebMarkupContainer wmc = new WebMarkupContainer("wmc"){
	@Override
	protected void onConfigure() {
		if(r.getValue().equals("0")){
			setVisibilityAllowed(true);
		}
		if(r.getValue().equals("1")){
			setVisibilityAllowed(false);
		}
}
wmc.setOutputMarkupPlaceholderTag(true);
		
r.add(new AjaxFormChoiceComponentUpdatingBehavior(){
		@Override
		protected void onUpdate(AjaxRequestTarget target) {
			target.add(wmc);
		}
	}
);


================
onConfigure() is always be executed, and can toggle the visibility.

AjaxFormChoiceComponentUpdatingBehavior.onUpdate() just pushes back the 
wmc, and due to onConfigure() of the wmc it determines its visibility 
depending on the new state of RadioCoice r.

kind regards
Patrick


Am 28.03.2013 13:44, schrieb Martin Grigorov:
> Hi,
>
> All you have explained should just work.
> It seems the component is still invisible after setVisible(true). Maybe you
> override it later ?! As you said in #onConfigure() or #isVisible() returns
> false ?
> Please show some code.
>
>
> On Thu, Mar 28, 2013 at 12:30 PM, Patrick Davids
> <pa...@nuboit.de>wrote:
>
>> Additional info:
>>
>> Its now working partially...
>>
>> I removed the onConfigure() of the markup container to determine the
>> initial visibility of itself depending on the radio default choice.
>>
>> So, my question changes to:
>> Whats the best way todo such an initial visibility without affecting the
>> ajax visibility changing?
>>
>> Patrick
>>
>>
>> Am 28.03.2013 11:18, schrieb Sven Meier:
>>>> My behavior on the gui is:
>>>> - the first render process of the page itself shows the container once
>>>> - on clicking my radiochoice the webmarkupcontainer disappears but is
>>>> still available, due to outPutMarkUpPlaceHolder true, but the content is
>>>> completly removed and the visibility of the container is always
>>>> display:none.
>>>>
>>>> Using setVisible or using setVisibilityAllowed does not make any
>> changes.
>>>
>>> So your container disappears but does not show up again after setting it
>>> visible?
>>>
>>> Sven
>>>
>>> On 03/28/2013 11:12 AM, Patrick Davids wrote:
>>>> Hi together,
>>>> I searched the web for several hours and always get the same results for
>>>> setting the visibilty for components via ajax, but I cannot get it work.
>>>>
>>>> The "should work" solution is:
>>>> - Creat an extra a WebMarkupContainer in your page
>>>> - add your subcomponents to this container
>>>> - setOutPutMarkUpIdPlacerHolderTag(true) for the container
>>>> - implement ajax anywhere (in my case its an
>>>> AjaxFormChoiceComponentUpdatingBehavior)
>>>> - override its onUpdate and setVisibilty of the container true or false
>>>> depending on something
>>>> - do target.add( the webmarkupcontainer )
>>>>
>>>> Tada... but nothing happens.
>>>>
>>>> My problems are:
>>>> All solutions I found are about 2-5 years old, so:
>>>> - the usage of setVisibilty has changed (setVisible vs.
>>>> setVisibilityAllowed() discussion)
>>>> - target does not have an addComponent() method anymore (but this is
>>>> easy, should be add(...))
>>>> - perhaps the hole "SetVisibilityViaAjax"-way has changed since newer
>>>> wicket versions?
>>>>
>>>> My behavior on the gui is:
>>>> - the first render process of the page itself shows the container once
>>>> - on clicking my radiochoice the webmarkupcontainer disappears but is
>>>> still available, due to outPutMarkUpPlaceHolder true, but the content is
>>>> completly removed and the visibility of the container is always
>>>> display:none.
>>>>
>>>> Using setVisible or using setVisibilityAllowed does not make any
>> changes.
>>>>
>>>> Whats wrong?!? :-(
>>>>
>>>> (using wicket 6.6)
>>>>
>>>> kind regards
>>>> Patrick
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>
>> --
>> Mit freundlichen Grüßen,
>>
>> Patrick Davids
>>
>> NuboIT GmbH & Co. KG
>> Kieler Str. 103-107 • 25474 Bönningstedt
>>
>> Email: patrick.davids@nuboit.de
>>
>> Handelsregister: HRA6819 Pi  | Amtsgericht Pinneberg
>>
>> Geschäftsführung der Verwaltungsgesellschaft
>> Daniel Fraga Zander
>>
>> HRB10145Pi | Amtsgericht Pinneberg
>
>
>
>

-- 
Mit freundlichen Grüßen,

Patrick Davids

NuboIT GmbH & Co. KG
Kieler Str. 103-107 • 25474 Bönningstedt

Email: patrick.davids@nuboit.de

Handelsregister: HRA6819 Pi  | Amtsgericht Pinneberg

Geschäftsführung der Verwaltungsgesellschaft
Daniel Fraga Zander

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


Re: Solved / Re: Need help setting visibility via AjaxFormChoiceComponentUpdatingBehavior

Posted by Patrick Davids <pa...@nuboit.de>.
I read this article and my first approach was like

"If an outside component controls another’s visibility the best way is 
to override the controlling component’s onConfigure() and call 
controlled.setVisible()"

But this doesnt worked, because onConfigure() of my RadioChoice runs 
only once.

What I can do to force onConfigure() of RadioChoice again is, also 
adding it to the AjaxRequestTarget.

r.add(new AjaxFormChoiceComponentUpdatingBehavior(){
                  @Override
                  protected void onUpdate(AjaxRequestTarget target) {
	->		 target.add(r);
                          target.add(wmc);
                  }
          }

This works, too...

I am not sure now, whats the better way... *lol*

Determine "my" visibility in my onConfigure() by watching the state of 
the controller by myself, and adding only one object to the 
AjaxRequestTarget.

or

Let set the visibility of "me" by a controller and adding two objects to 
the AjaxRequestTarget, so the onConfigure() of the controller can do its 
visibility setting job.

Pull or Push?

regards
Patrick


Am 28.03.2013 14:40, schrieb Martin Grigorov:
> See
> http://wicketinaction.com/2011/11/implement-wicket-component-visibility-changes-properly/
>
>
> On Thu, Mar 28, 2013 at 3:36 PM, Patrick Davids <pa...@nuboit.de>wrote:
>
>> I am not sure what exactly was wrong.
>> Perhaps I had too much code with several active setVisibility...() XYZs
>> code parts.
>>
>> I started from the beginning and found the beautiest way for me, looking
>> like this.
>>
>> final RadioChoice<String> r = new RadioChoice<String>("id",
>> Model.of(""), Arrays.asList(new String[{"visible","invisible"}));
>>
>> r.setModelObject("visible");
>>
>> final WebMarkupContainer wmc = new WebMarkupContainer("wmc"){
>>          @Override
>>          protected void onConfigure() {
>>                  if(r.getValue().equals("0")){
>>                          setVisibilityAllowed(true);
>>                  }
>>                  if(r.getValue().equals("1")){
>>                          setVisibilityAllowed(false);
>>                  }
>> }
>> wmc.setOutputMarkupPlaceholderTag(true);
>>
>> r.add(new AjaxFormChoiceComponentUpdatingBehavior(){
>>                  @Override
>>                  protected void onUpdate(AjaxRequestTarget target) {
>>                          target.add(wmc);
>>                  }
>>          }
>> );
>>
>>
>> ================
>> onConfigure() is always be executed, and can toggle the visibility.
>>
>> AjaxFormChoiceComponentUpdatingBehavior.onUpdate() just pushes back the
>> wmc, and due to onConfigure() of the wmc it determines its visibility
>> depending on the new state of RadioCoice r.
>>
>> kind regards
>> Patrick
>>
>>
>> Am 28.03.2013 13:44, schrieb Martin Grigorov:
>>> Hi,
>>>
>>> All you have explained should just work.
>>> It seems the component is still invisible after setVisible(true). Maybe
>> you
>>> override it later ?! As you said in #onConfigure() or #isVisible()
>> returns
>>> false ?
>>> Please show some code.
>>>
>>>
>>> On Thu, Mar 28, 2013 at 12:30 PM, Patrick Davids
>>> <pa...@nuboit.de>wrote:
>>>
>>>> Additional info:
>>>>
>>>> Its now working partially...
>>>>
>>>> I removed the onConfigure() of the markup container to determine the
>>>> initial visibility of itself depending on the radio default choice.
>>>>
>>>> So, my question changes to:
>>>> Whats the best way todo such an initial visibility without affecting the
>>>> ajax visibility changing?
>>>>
>>>> Patrick
>>>>
>>>>
>>>> Am 28.03.2013 11:18, schrieb Sven Meier:
>>>>>> My behavior on the gui is:
>>>>>> - the first render process of the page itself shows the container once
>>>>>> - on clicking my radiochoice the webmarkupcontainer disappears but is
>>>>>> still available, due to outPutMarkUpPlaceHolder true, but the content
>> is
>>>>>> completly removed and the visibility of the container is always
>>>>>> display:none.
>>>>>>
>>>>>> Using setVisible or using setVisibilityAllowed does not make any
>>>> changes.
>>>>>
>>>>> So your container disappears but does not show up again after setting
>> it
>>>>> visible?
>>>>>
>>>>> Sven
>>>>>
>>>>> On 03/28/2013 11:12 AM, Patrick Davids wrote:
>>>>>> Hi together,
>>>>>> I searched the web for several hours and always get the same results
>> for
>>>>>> setting the visibilty for components via ajax, but I cannot get it
>> work.
>>>>>>
>>>>>> The "should work" solution is:
>>>>>> - Creat an extra a WebMarkupContainer in your page
>>>>>> - add your subcomponents to this container
>>>>>> - setOutPutMarkUpIdPlacerHolderTag(true) for the container
>>>>>> - implement ajax anywhere (in my case its an
>>>>>> AjaxFormChoiceComponentUpdatingBehavior)
>>>>>> - override its onUpdate and setVisibilty of the container true or
>> false
>>>>>> depending on something
>>>>>> - do target.add( the webmarkupcontainer )
>>>>>>
>>>>>> Tada... but nothing happens.
>>>>>>
>>>>>> My problems are:
>>>>>> All solutions I found are about 2-5 years old, so:
>>>>>> - the usage of setVisibilty has changed (setVisible vs.
>>>>>> setVisibilityAllowed() discussion)
>>>>>> - target does not have an addComponent() method anymore (but this is
>>>>>> easy, should be add(...))
>>>>>> - perhaps the hole "SetVisibilityViaAjax"-way has changed since newer
>>>>>> wicket versions?
>>>>>>
>>>>>> My behavior on the gui is:
>>>>>> - the first render process of the page itself shows the container once
>>>>>> - on clicking my radiochoice the webmarkupcontainer disappears but is
>>>>>> still available, due to outPutMarkUpPlaceHolder true, but the content
>> is
>>>>>> completly removed and the visibility of the container is always
>>>>>> display:none.
>>>>>>
>>>>>> Using setVisible or using setVisibilityAllowed does not make any
>>>> changes.
>>>>>>
>>>>>> Whats wrong?!? :-(
>>>>>>
>>>>>> (using wicket 6.6)
>>>>>>
>>>>>> kind regards
>>>>>> Patrick
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>
>>>> --
>>>> Mit freundlichen Grüßen,
>>>>
>>>> Patrick Davids
>>>>
>>>> NuboIT GmbH & Co. KG
>>>> Kieler Str. 103-107 • 25474 Bönningstedt
>>>>
>>>> Email: patrick.davids@nuboit.de
>>>>
>>>> Handelsregister: HRA6819 Pi  | Amtsgericht Pinneberg
>>>>
>>>> Geschäftsführung der Verwaltungsgesellschaft
>>>> Daniel Fraga Zander
>>>>
>>>> HRB10145Pi | Amtsgericht Pinneberg
>>>
>>>
>>>
>>>
>>
>> --
>> Mit freundlichen Grüßen,
>>
>> Patrick Davids
>>
>> NuboIT GmbH & Co. KG
>> Kieler Str. 103-107 • 25474 Bönningstedt
>>
>> Email: patrick.davids@nuboit.de
>>
>> Handelsregister: HRA6819 Pi  | Amtsgericht Pinneberg
>>
>> Geschäftsführung der Verwaltungsgesellschaft
>> Daniel Fraga Zander
>>
>> HRB10145Pi | Amtsgericht Pinneberg
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
>

-- 
Mit freundlichen Grüßen,

Patrick Davids

NuboIT GmbH & Co. KG
Kieler Str. 103-107 • 25474 Bönningstedt

Email: patrick.davids@nuboit.de

Handelsregister: HRA6819 Pi  | Amtsgericht Pinneberg

Geschäftsführung der Verwaltungsgesellschaft
Daniel Fraga Zander

HRB10145Pi | Amtsgericht Pinneberg

Re: Solved / Re: Need help setting visibility via AjaxFormChoiceComponentUpdatingBehavior

Posted by Martin Grigorov <mg...@apache.org>.
See
http://wicketinaction.com/2011/11/implement-wicket-component-visibility-changes-properly/


On Thu, Mar 28, 2013 at 3:36 PM, Patrick Davids <pa...@nuboit.de>wrote:

> I am not sure what exactly was wrong.
> Perhaps I had too much code with several active setVisibility...() XYZs
> code parts.
>
> I started from the beginning and found the beautiest way for me, looking
> like this.
>
> final RadioChoice<String> r = new RadioChoice<String>("id",
> Model.of(""), Arrays.asList(new String[{"visible","invisible"}));
>
> r.setModelObject("visible");
>
> final WebMarkupContainer wmc = new WebMarkupContainer("wmc"){
>         @Override
>         protected void onConfigure() {
>                 if(r.getValue().equals("0")){
>                         setVisibilityAllowed(true);
>                 }
>                 if(r.getValue().equals("1")){
>                         setVisibilityAllowed(false);
>                 }
> }
> wmc.setOutputMarkupPlaceholderTag(true);
>
> r.add(new AjaxFormChoiceComponentUpdatingBehavior(){
>                 @Override
>                 protected void onUpdate(AjaxRequestTarget target) {
>                         target.add(wmc);
>                 }
>         }
> );
>
>
> ================
> onConfigure() is always be executed, and can toggle the visibility.
>
> AjaxFormChoiceComponentUpdatingBehavior.onUpdate() just pushes back the
> wmc, and due to onConfigure() of the wmc it determines its visibility
> depending on the new state of RadioCoice r.
>
> kind regards
> Patrick
>
>
> Am 28.03.2013 13:44, schrieb Martin Grigorov:
> > Hi,
> >
> > All you have explained should just work.
> > It seems the component is still invisible after setVisible(true). Maybe
> you
> > override it later ?! As you said in #onConfigure() or #isVisible()
> returns
> > false ?
> > Please show some code.
> >
> >
> > On Thu, Mar 28, 2013 at 12:30 PM, Patrick Davids
> > <pa...@nuboit.de>wrote:
> >
> >> Additional info:
> >>
> >> Its now working partially...
> >>
> >> I removed the onConfigure() of the markup container to determine the
> >> initial visibility of itself depending on the radio default choice.
> >>
> >> So, my question changes to:
> >> Whats the best way todo such an initial visibility without affecting the
> >> ajax visibility changing?
> >>
> >> Patrick
> >>
> >>
> >> Am 28.03.2013 11:18, schrieb Sven Meier:
> >>>> My behavior on the gui is:
> >>>> - the first render process of the page itself shows the container once
> >>>> - on clicking my radiochoice the webmarkupcontainer disappears but is
> >>>> still available, due to outPutMarkUpPlaceHolder true, but the content
> is
> >>>> completly removed and the visibility of the container is always
> >>>> display:none.
> >>>>
> >>>> Using setVisible or using setVisibilityAllowed does not make any
> >> changes.
> >>>
> >>> So your container disappears but does not show up again after setting
> it
> >>> visible?
> >>>
> >>> Sven
> >>>
> >>> On 03/28/2013 11:12 AM, Patrick Davids wrote:
> >>>> Hi together,
> >>>> I searched the web for several hours and always get the same results
> for
> >>>> setting the visibilty for components via ajax, but I cannot get it
> work.
> >>>>
> >>>> The "should work" solution is:
> >>>> - Creat an extra a WebMarkupContainer in your page
> >>>> - add your subcomponents to this container
> >>>> - setOutPutMarkUpIdPlacerHolderTag(true) for the container
> >>>> - implement ajax anywhere (in my case its an
> >>>> AjaxFormChoiceComponentUpdatingBehavior)
> >>>> - override its onUpdate and setVisibilty of the container true or
> false
> >>>> depending on something
> >>>> - do target.add( the webmarkupcontainer )
> >>>>
> >>>> Tada... but nothing happens.
> >>>>
> >>>> My problems are:
> >>>> All solutions I found are about 2-5 years old, so:
> >>>> - the usage of setVisibilty has changed (setVisible vs.
> >>>> setVisibilityAllowed() discussion)
> >>>> - target does not have an addComponent() method anymore (but this is
> >>>> easy, should be add(...))
> >>>> - perhaps the hole "SetVisibilityViaAjax"-way has changed since newer
> >>>> wicket versions?
> >>>>
> >>>> My behavior on the gui is:
> >>>> - the first render process of the page itself shows the container once
> >>>> - on clicking my radiochoice the webmarkupcontainer disappears but is
> >>>> still available, due to outPutMarkUpPlaceHolder true, but the content
> is
> >>>> completly removed and the visibility of the container is always
> >>>> display:none.
> >>>>
> >>>> Using setVisible or using setVisibilityAllowed does not make any
> >> changes.
> >>>>
> >>>> Whats wrong?!? :-(
> >>>>
> >>>> (using wicket 6.6)
> >>>>
> >>>> kind regards
> >>>> Patrick
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >>>> For additional commands, e-mail: users-help@wicket.apache.org
> >>>>
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >>> For additional commands, e-mail: users-help@wicket.apache.org
> >>>
> >>
> >> --
> >> Mit freundlichen Grüßen,
> >>
> >> Patrick Davids
> >>
> >> NuboIT GmbH & Co. KG
> >> Kieler Str. 103-107 • 25474 Bönningstedt
> >>
> >> Email: patrick.davids@nuboit.de
> >>
> >> Handelsregister: HRA6819 Pi  | Amtsgericht Pinneberg
> >>
> >> Geschäftsführung der Verwaltungsgesellschaft
> >> Daniel Fraga Zander
> >>
> >> HRB10145Pi | Amtsgericht Pinneberg
> >
> >
> >
> >
>
> --
> Mit freundlichen Grüßen,
>
> Patrick Davids
>
> NuboIT GmbH & Co. KG
> Kieler Str. 103-107 • 25474 Bönningstedt
>
> Email: patrick.davids@nuboit.de
>
> Handelsregister: HRA6819 Pi  | Amtsgericht Pinneberg
>
> Geschäftsführung der Verwaltungsgesellschaft
> Daniel Fraga Zander
>
> HRB10145Pi | Amtsgericht Pinneberg
> ---------------------------------------------------------------------
> 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/>