You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by "Brown, Berlin [GCG-PFS]" <Be...@Primerica.com> on 2010/06/25 20:09:46 UTC

Wicket: On RadioChoice component, invoke form submit, what am I missing

There are some components in wicket that seem to be associated with a
form, but I can't get them to actually submit the form.
 
Or at least, I can't get them to submit the form, if I have a hierarchy
of FORM -> PANEL -> COMPONENT/RADIOCHOICE
 
For example, I can create a "submitlink" or button and those components
submit:
 
return new SubmitLink(id, form) {   
   @Override
   public void onSubmit() {
    this.setResponsePage(pageClass);
   }
  };
 
That works above.
 
I want to be able to perform a submit on a radio choice, on change. E.g.
 
new OnChangeHandler() {     
 
     @Override
     public void onChange(final Object sel) {      
      // On submission, submit back to form
      setResponsePage(Page.class);
     } 
 
// MY CONTAINER IS NOT A FORM BUT A CHILD OF A FORM (E.g. FORM -> PANEL
-> RADIOCHOICE
 
public RadioChoice addRadioGroup(final WebMarkupContainer container,
final Object modelObject, 
   final String groupName, final String propFieldName, final String []
optionsArr, final OnChangeHandler handler) {
 
  final RadioChoice radioGroupYesNo = new RadioChoice(groupName, new
PropertyModel(modelObject, propFieldName), Arrays.asList(optionsArr)) {
 
         @Override
   public boolean wantOnSelectionChangedNotifications() {   
    return (handler != null); /* When the handler is not null, enable on
change */
   }
   @Override
   public void onSelectionChanged(Object newSel) {
    if (handler != null) {     
     handler.onChange(newSel);
    } else {
     super.onSelectionChanged(newSel);
    }
   }   
  };    
  container.add(radioGroupYesNo);
  return radioGroupYesNo;
 }
 
With the code shown above, the page refreshes, but I want to submit the
form and do a page refresh.
 
I don't see where I could associate the form with the RadioChoice?

Does RadioChoice need to imlement IFormSubmittingComponent?
 
Berlin Brown

Re: Wicket: On RadioChoice component, invoke form submit, what am I missing

Posted by Berlin Brown <be...@gmail.com>.
On Sat, Jun 26, 2010 at 6:01 AM, Martin Grigorov
<ma...@yahoo.com>wrote:

> You need to use either pure Javascript:
> 1) <input type="radio" onchange="this.form.submit();"/"
>
> or Ajax:
> 2) radioGroup.add(new AjaxFormSubmitBehavior("onchange") {public void
> onSubmit(AjaxRequestTarget target) {...}}
>
> On Fri, 2010-06-25 at 14:09 -0400, Brown, Berlin [GCG-PFS] wrote:
> > There are some components in wicket that seem to be associated with a
> > form, but I can't get them to actually submit the form.
> >
> > Or at least, I can't get them to submit the form, if I have a hierarchy
> > of FORM -> PANEL -> COMPONENT/RADIOCHOICE
> >
> > For example, I can create a "submitlink" or button and those components
> > submit:
> >
> > return new SubmitLink(id, form) {
> >    @Override
> >    public void onSubmit() {
> >     this.setResponsePage(pageClass);
> >    }
> >   };
> >
> > That works above.
> >
> > I want to be able to perform a submit on a radio choice, on change. E.g.
> >
> > new OnChangeHandler() {
> >
> >      @Override
> >      public void onChange(final Object sel) {
> >       // On submission, submit back to form
> >       setResponsePage(Page.class);
> >      }
> >
> > // MY CONTAINER IS NOT A FORM BUT A CHILD OF A FORM (E.g. FORM -> PANEL
> > -> RADIOCHOICE
> >
> > public RadioChoice addRadioGroup(final WebMarkupContainer container,
> > final Object modelObject,
> >    final String groupName, final String propFieldName, final String []
> > optionsArr, final OnChangeHandler handler) {
> >
> >   final RadioChoice radioGroupYesNo = new RadioChoice(groupName, new
> > PropertyModel(modelObject, propFieldName), Arrays.asList(optionsArr)) {
> >
> >          @Override
> >    public boolean wantOnSelectionChangedNotifications() {
> >     return (handler != null); /* When the handler is not null, enable on
> > change */
> >    }
> >    @Override
> >    public void onSelectionChanged(Object newSel) {
> >     if (handler != null) {
> >      handler.onChange(newSel);
> >     } else {
> >      super.onSelectionChanged(newSel);
> >     }
> >    }
> >   };
> >   container.add(radioGroupYesNo);
> >   return radioGroupYesNo;
> >  }
> >
> > With the code shown above, the page refreshes, but I want to submit the
> > form and do a page refresh.
> >
> > I don't see where I could associate the form with the RadioChoice?
> >
> > Does RadioChoice need to imlement IFormSubmittingComponent?
> >
> > Berlin Brown
>
>
>
>
public boolean wantOnSelectionChangedNotifica
tions() {
>     return (handler != null); /* When the handler is not null, enable on
> change */
>    }


It was this code.   I didn't add wantOnSelection... to the right
components.  The form was being submitted, some fields weren't getting
saved.



-- 
Berlin Brown (berlin dot brown at gmail.com)
http://botnode.com
http://berlinbrowndev.blogspot.com/

Re: Wicket: On RadioChoice component, invoke form submit, what am I missing

Posted by Martin Grigorov <ma...@yahoo.com>.
You need to use either pure Javascript:
1) <input type="radio" onchange="this.form.submit();"/"

or Ajax:
2) radioGroup.add(new AjaxFormSubmitBehavior("onchange") {public void
onSubmit(AjaxRequestTarget target) {...}}

On Fri, 2010-06-25 at 14:09 -0400, Brown, Berlin [GCG-PFS] wrote:
> There are some components in wicket that seem to be associated with a
> form, but I can't get them to actually submit the form.
>  
> Or at least, I can't get them to submit the form, if I have a hierarchy
> of FORM -> PANEL -> COMPONENT/RADIOCHOICE
>  
> For example, I can create a "submitlink" or button and those components
> submit:
>  
> return new SubmitLink(id, form) {   
>    @Override
>    public void onSubmit() {
>     this.setResponsePage(pageClass);
>    }
>   };
>  
> That works above.
>  
> I want to be able to perform a submit on a radio choice, on change. E.g.
>  
> new OnChangeHandler() {     
>  
>      @Override
>      public void onChange(final Object sel) {      
>       // On submission, submit back to form
>       setResponsePage(Page.class);
>      } 
>  
> // MY CONTAINER IS NOT A FORM BUT A CHILD OF A FORM (E.g. FORM -> PANEL
> -> RADIOCHOICE
>  
> public RadioChoice addRadioGroup(final WebMarkupContainer container,
> final Object modelObject, 
>    final String groupName, final String propFieldName, final String []
> optionsArr, final OnChangeHandler handler) {
>  
>   final RadioChoice radioGroupYesNo = new RadioChoice(groupName, new
> PropertyModel(modelObject, propFieldName), Arrays.asList(optionsArr)) {
>  
>          @Override
>    public boolean wantOnSelectionChangedNotifications() {   
>     return (handler != null); /* When the handler is not null, enable on
> change */
>    }
>    @Override
>    public void onSelectionChanged(Object newSel) {
>     if (handler != null) {     
>      handler.onChange(newSel);
>     } else {
>      super.onSelectionChanged(newSel);
>     }
>    }   
>   };    
>   container.add(radioGroupYesNo);
>   return radioGroupYesNo;
>  }
>  
> With the code shown above, the page refreshes, but I want to submit the
> form and do a page refresh.
>  
> I don't see where I could associate the form with the RadioChoice?
> 
> Does RadioChoice need to imlement IFormSubmittingComponent?
>  
> Berlin Brown




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