You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Linda van der Pal <lv...@heritageagenturen.nl> on 2009/03/06 13:31:59 UTC

Ajaxifying FormComponentPanel

I have a FormComponentPanel that contains a TextField and a 
DropDownChoice. Of those two only one is visible at any moment. (The 
TextField is there for when the DropDownChoice doesn't offer the wanted 
result.) On the panel that contains the FormComponentPanel, I want 
another element to respond to any change in the FormComponentPanel (most 
importantly if the user selects something from the DropDownChoice). I 
have added ajax behavior to the component, but the model isn't updated, 
so when I debug the onChange method of the behavior, I find that the 
object in the model is null. How do I get it to update properly?

Regards,
Linda van der Pal

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


Re: Ajaxifying FormComponentPanel

Posted by Linda van der Pal <lv...@heritageagenturen.nl>.
I still haven't found the solution to this problem, so I've made 
quickstart for it. Since I don't think it's a bug in Wicket, I've 
attached it to this message instead of creating a JIRA.

Regards,
Linda

Linda van der Pal wrote:
> When I debug the app, I can see that getObject() is being called for 
> subgenrefield, only selectedGenre == null. I also put a breakpoint in 
> convertInput() inside the GenreFieldSwithPanel, but it doesn't pass 
> it. Shouldn't it use that to determine what the new value of the model 
> will be?
>
> Linda
>
> Linda van der Pal wrote:
>> That is in fact the type of behavior I am using. Here's a bit of the 
>> code:
>>
>>            // The subgenre-field
>>            IModel<List<Subgenre>> subgenreModel = new 
>> AbstractReadOnlyModel<List<Subgenre>>() {
>>                @Override
>>                public List<Subgenre> getObject() {
>>                    List<Subgenre> subgenres = new ArrayList<Subgenre>();
>>                    if (selectedGenre != null){
>>                        // Fetch the subgenres based on selectedGenre
>>                         subgenres = ...
>>                    }
>>                    return subgenres;
>>                }
>>            };
>>            final FieldSwitchPanel subgenrefield = new 
>> SubgenreFieldSwitchPanel("subgenre", subgenreModel);
>>            subgenrefield.setOutputMarkupId(true);
>>            subgenrefield.setOutputMarkupPlaceholderTag(true);
>>            form.add(subgenrefield);
>>                                // The genre-field
>>            // fetch the genres
>>            List<DomainObject> genres = ...
>>                      final FieldSwitchPanel genrefield = new 
>> GenreFieldSwitchPanel("genre", genres, new 
>> PropertyModel<DomainObject>(this, "selectedGenre"));
>>            genrefield.add(new 
>> AjaxFormComponentUpdatingBehavior("onchange") {
>>                @Override
>>                protected void onUpdate(AjaxRequestTarget target) {
>>                    target.addComponent(subgenrefield);
>>                }
>>            });
>>            genrefield.setOutputMarkupPlaceholderTag(true);
>>            form.add(genrefield);
>>
>> The problem is that selectedGenre stays null. So I'm looking for the 
>> cause of that. My guess is that it is because the model isn't 
>> updated. (I did implement convertInput() in GenreFieldSwitchPanel, 
>> which extends FormComponentPanel.)
>>
>> Linda
>>
>> jWeekend wrote:
>>> Linda,
>>>
>>> Take a look at AjaxFormComponentUpdatingBehavior.
>>>
>>> Regards - Cemal
>>> http://jWeekend.com jWeekend
>>>
>>> Linda van der Pal wrote:
>>>  
>>>> I have a FormComponentPanel that contains a TextField and a 
>>>> DropDownChoice. Of those two only one is visible at any moment. 
>>>> (The TextField is there for when the DropDownChoice doesn't offer 
>>>> the wanted result.) On the panel that contains the 
>>>> FormComponentPanel, I want another element to respond to any change 
>>>> in the FormComponentPanel (most importantly if the user selects 
>>>> something from the DropDownChoice). I have added ajax behavior to 
>>>> the component, but the model isn't updated, so when I debug the 
>>>> onChange method of the behavior, I find that the object in the 
>>>> model is null. How do I get it to update properly?
>>>>
>>>> Regards,
>>>> Linda van der Pal
>>>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com 
> Version: 8.5.278 / Virus Database: 270.11.9/1991 - Release Date: 03/09/09 07:14:00
>
>   


Re: Ajaxifying FormComponentPanel

Posted by Linda van der Pal <lv...@heritageagenturen.nl>.
When I debug the app, I can see that getObject() is being called for 
subgenrefield, only selectedGenre == null. I also put a breakpoint in 
convertInput() inside the GenreFieldSwithPanel, but it doesn't pass it. 
Shouldn't it use that to determine what the new value of the model will be?

Linda

Linda van der Pal wrote:
> That is in fact the type of behavior I am using. Here's a bit of the 
> code:
>
>            // The subgenre-field
>            IModel<List<Subgenre>> subgenreModel = new 
> AbstractReadOnlyModel<List<Subgenre>>() {
>                @Override
>                public List<Subgenre> getObject() {
>                    List<Subgenre> subgenres = new ArrayList<Subgenre>();
>                    if (selectedGenre != null){
>                        // Fetch the subgenres based on selectedGenre
>                         subgenres = ...
>                    }
>                    return subgenres;
>                }
>            };
>            final FieldSwitchPanel subgenrefield = new 
> SubgenreFieldSwitchPanel("subgenre", subgenreModel);
>            subgenrefield.setOutputMarkupId(true);
>            subgenrefield.setOutputMarkupPlaceholderTag(true);
>            form.add(subgenrefield);
>                                // The genre-field
>            // fetch the genres
>            List<DomainObject> genres = ...
>                      final FieldSwitchPanel genrefield = new 
> GenreFieldSwitchPanel("genre", genres, new 
> PropertyModel<DomainObject>(this, "selectedGenre"));
>            genrefield.add(new 
> AjaxFormComponentUpdatingBehavior("onchange") {
>                @Override
>                protected void onUpdate(AjaxRequestTarget target) {
>                    target.addComponent(subgenrefield);
>                }
>            });
>            genrefield.setOutputMarkupPlaceholderTag(true);
>            form.add(genrefield);
>
> The problem is that selectedGenre stays null. So I'm looking for the 
> cause of that. My guess is that it is because the model isn't updated. 
> (I did implement convertInput() in GenreFieldSwitchPanel, which 
> extends FormComponentPanel.)
>
> Linda
>
> jWeekend wrote:
>> Linda,
>>
>> Take a look at AjaxFormComponentUpdatingBehavior.
>>
>> Regards - Cemal
>> http://jWeekend.com jWeekend
>>
>> Linda van der Pal wrote:
>>  
>>> I have a FormComponentPanel that contains a TextField and a 
>>> DropDownChoice. Of those two only one is visible at any moment. (The 
>>> TextField is there for when the DropDownChoice doesn't offer the 
>>> wanted result.) On the panel that contains the FormComponentPanel, I 
>>> want another element to respond to any change in the 
>>> FormComponentPanel (most importantly if the user selects something 
>>> from the DropDownChoice). I have added ajax behavior to the 
>>> component, but the model isn't updated, so when I debug the onChange 
>>> method of the behavior, I find that the object in the model is null. 
>>> How do I get it to update properly?
>>>
>>> Regards,
>>> Linda van der Pal
>>>
>


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


Re: Ajaxifying FormComponentPanel

Posted by Linda van der Pal <lv...@heritageagenturen.nl>.
That is in fact the type of behavior I am using. Here's a bit of the code:

            // The subgenre-field
            IModel<List<Subgenre>> subgenreModel = new 
AbstractReadOnlyModel<List<Subgenre>>() {
                @Override
                public List<Subgenre> getObject() {
                    List<Subgenre> subgenres = new ArrayList<Subgenre>();
                    if (selectedGenre != null){
                        // Fetch the subgenres based on selectedGenre
                         subgenres = ...
                    }
                    return subgenres;
                }
            };
            final FieldSwitchPanel subgenrefield = new 
SubgenreFieldSwitchPanel("subgenre", subgenreModel);
            subgenrefield.setOutputMarkupId(true);
            subgenrefield.setOutputMarkupPlaceholderTag(true);
            form.add(subgenrefield);
           
           
            // The genre-field
            // fetch the genres
            List<DomainObject> genres = ...
           
            final FieldSwitchPanel genrefield = new 
GenreFieldSwitchPanel("genre", genres, new 
PropertyModel<DomainObject>(this, "selectedGenre"));
            genrefield.add(new 
AjaxFormComponentUpdatingBehavior("onchange") {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.addComponent(subgenrefield);
                }
            });
            genrefield.setOutputMarkupPlaceholderTag(true);
            form.add(genrefield);

The problem is that selectedGenre stays null. So I'm looking for the 
cause of that. My guess is that it is because the model isn't updated. 
(I did implement convertInput() in GenreFieldSwitchPanel, which extends 
FormComponentPanel.)

Linda

jWeekend wrote:
> Linda,
>
> Take a look at AjaxFormComponentUpdatingBehavior.
>
> Regards - Cemal
> http://jWeekend.com jWeekend 
>
>
> Linda van der Pal wrote:
>   
>> I have a FormComponentPanel that contains a TextField and a 
>> DropDownChoice. Of those two only one is visible at any moment. (The 
>> TextField is there for when the DropDownChoice doesn't offer the wanted 
>> result.) On the panel that contains the FormComponentPanel, I want 
>> another element to respond to any change in the FormComponentPanel (most 
>> importantly if the user selects something from the DropDownChoice). I 
>> have added ajax behavior to the component, but the model isn't updated, 
>> so when I debug the onChange method of the behavior, I find that the 
>> object in the model is null. How do I get it to update properly?
>>
>> Regards,
>> Linda van der Pal
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>>
>>     
>
>   
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com 
> Version: 8.5.278 / Virus Database: 270.11.8/1986 - Release Date: 03/05/09 19:32:00
>
>   


Re: Ajaxifying FormComponentPanel

Posted by jWeekend <jw...@cabouge.com>.
Linda,

Take a look at AjaxFormComponentUpdatingBehavior.

Regards - Cemal
http://jWeekend.com jWeekend 


Linda van der Pal wrote:
> 
> I have a FormComponentPanel that contains a TextField and a 
> DropDownChoice. Of those two only one is visible at any moment. (The 
> TextField is there for when the DropDownChoice doesn't offer the wanted 
> result.) On the panel that contains the FormComponentPanel, I want 
> another element to respond to any change in the FormComponentPanel (most 
> importantly if the user selects something from the DropDownChoice). I 
> have added ajax behavior to the component, but the model isn't updated, 
> so when I debug the onChange method of the behavior, I find that the 
> object in the model is null. How do I get it to update properly?
> 
> Regards,
> Linda van der Pal
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Ajaxifying-FormComponentPanel-tp22371617p22372521.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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