Re: AjaxFormValidatingBehavior on component
Hi, you actually need an AjaxFormSubmitBehavior to transfer all input values to the server. Note that AjaxFormValidatingBehavior attaches a AjaxFormSubmitBehavior to *each* FormComponent in your form. You could do something similar with a *single* AjaxFormSubmitBehavior and event "focusout". Although most projects probably use AjaxFormComponentUpdatingBehaviors to update each FormComponent separately. Have fun Sven On 18.05.2016 21:34, Lon Varscsak wrote: @Bas, I was originally adding it to the form (which is in a parent component), but it just wasn’t working. I’m sure I’m missing something about the nature of parent/child components. @Sven Can you elaborate for me a little more (still a Wicket newb). Can I use a AjaxEventBehavior with a Form? Thanks! -Lon On Wed, May 18, 2016 at 5:31 AM, Sven Meier wrote: Thanks Bas! I see, this is new in Wicket 7.x (WICKET-5196). We could delay the check for the parental form into #onConfigure(). IMHO a better solution would be to use a bubbling event instead (e.g. "focusout") and attaching a single listener to the form (instead of adding a behaviors to each contained formComponent). Sven On 18.05.2016 13:23, Bas Gooren wrote: Uhh, that error message is right there on the AFVB’s onBind(): https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L102 The problem is that the check for a parent form is happening in onBind(), so when the behavior is attached to a component. In other words: you can only add AFVB to a component _after_ you have added that component to a Form. I suspect that the main reason for this is that this behavior is meant to be used on a whole form, not a single form component. Even when you attach it to a single component, it will always validate _all_ components in the form. See https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L117 The OP should probably be using a AjaxFormComponentUpdatingBehavior, adding any feedback panels in onUpdate() and onError(). Met vriendelijke groet, Kind regards, Bas Gooren Op 18 mei 2016 bij 11:29:26, Sven Meier (s...@meiers.net) schreef: Hi, I cannot find that error message in Wicket's source. Are you using org.apache.wicket.ajax.form.AjaxFormValidatingBehavior or some subclass or alternative? Have fun Sven On 18.05.2016 02:37, Lon Varscsak wrote: Hey guys, I may be missing something here, but if I do: TextField textField = new TextField("keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); textField.add(new AjaxFormValidatingBehavior("blur")); * add(textField);* I get an error “*AjaxFormValidatingBehavior should be bound to a Form component or a component that is inside a form!*” If I change it to: TextField textField = new TextField(“keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); * add(textField);* textField.add(new AjaxFormValidatingBehavior("blur")); It works. Basically the AjaxFormValidatingBehavior is expecting to find a form in it’s parent, but it’s parent hasn’t been assigned yet. Is this expected behavior? Thanks, Lon - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: AjaxFormValidatingBehavior on component
@Bas, I was originally adding it to the form (which is in a parent component), but it just wasn’t working. I’m sure I’m missing something about the nature of parent/child components. @Sven Can you elaborate for me a little more (still a Wicket newb). Can I use a AjaxEventBehavior with a Form? Thanks! -Lon On Wed, May 18, 2016 at 5:31 AM, Sven Meier wrote: > Thanks Bas! > > I see, this is new in Wicket 7.x (WICKET-5196). > > We could delay the check for the parental form into #onConfigure(). > > IMHO a better solution would be to use a bubbling event instead (e.g. > "focusout") and attaching a single listener to the form (instead of adding > a behaviors to each contained formComponent). > > Sven > > > > On 18.05.2016 13:23, Bas Gooren wrote: > >> Uhh, that error message is right there on the AFVB’s onBind(): >> >> >> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L102 >> >> The problem is that the check for a parent form is happening in onBind(), >> so when the behavior is attached to a component. >> In other words: you can only add AFVB to a component _after_ you have >> added that component to a Form. >> >> I suspect that the main reason for this is that this behavior is meant to >> be used on a whole form, not a single form component. >> Even when you attach it to a single component, it will always validate >> _all_ components in the form. >> See >> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L117 >> >> The OP should probably be using a AjaxFormComponentUpdatingBehavior, >> adding any feedback panels in onUpdate() and onError(). >> >> Met vriendelijke groet, >> Kind regards, >> >> Bas Gooren >> >> Op 18 mei 2016 bij 11:29:26, Sven Meier (s...@meiers.net) schreef: >> >> Hi, >> >> I cannot find that error message in Wicket's source. >> >> Are you using org.apache.wicket.ajax.form.AjaxFormValidatingBehavior or >> some subclass or alternative? >> >> Have fun >> Sven >> >> >> On 18.05.2016 02:37, Lon Varscsak wrote: >> >>> Hey guys, I may be missing something here, but if I do: >>> TextField textField = new TextField("keyCode", new >>> PropertyModel<>( >>> order, OrderHeader.SOURCE_KEY_KEY)); >>> textField.add(new AjaxFormValidatingBehavior("blur")); >>> * add(textField);* >>> I get an error “*AjaxFormValidatingBehavior should be bound to a Form >>> component or a component that is inside a form!*” >>> If I change it to: >>> TextField textField = new TextField(“keyCode", new >>> PropertyModel<>( >>> order, OrderHeader.SOURCE_KEY_KEY)); >>> * add(textField);* >>> textField.add(new AjaxFormValidatingBehavior("blur")); >>> It works. Basically the AjaxFormValidatingBehavior is expecting to >>> find a >>> form in it’s parent, but it’s parent hasn’t been assigned yet. >>> Is this expected behavior? >>> Thanks, >>> Lon >>> >>> >> >> - >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> > > - > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
Re: AjaxFormValidatingBehavior on component
Thanks Bas! I see, this is new in Wicket 7.x (WICKET-5196). We could delay the check for the parental form into #onConfigure(). IMHO a better solution would be to use a bubbling event instead (e.g. "focusout") and attaching a single listener to the form (instead of adding a behaviors to each contained formComponent). Sven On 18.05.2016 13:23, Bas Gooren wrote: Uhh, that error message is right there on the AFVB’s onBind(): https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L102 The problem is that the check for a parent form is happening in onBind(), so when the behavior is attached to a component. In other words: you can only add AFVB to a component _after_ you have added that component to a Form. I suspect that the main reason for this is that this behavior is meant to be used on a whole form, not a single form component. Even when you attach it to a single component, it will always validate _all_ components in the form. See https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L117 The OP should probably be using a AjaxFormComponentUpdatingBehavior, adding any feedback panels in onUpdate() and onError(). Met vriendelijke groet, Kind regards, Bas Gooren Op 18 mei 2016 bij 11:29:26, Sven Meier (s...@meiers.net) schreef: Hi, I cannot find that error message in Wicket's source. Are you using org.apache.wicket.ajax.form.AjaxFormValidatingBehavior or some subclass or alternative? Have fun Sven On 18.05.2016 02:37, Lon Varscsak wrote: Hey guys, I may be missing something here, but if I do: TextField textField = new TextField("keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); textField.add(new AjaxFormValidatingBehavior("blur")); * add(textField);* I get an error “*AjaxFormValidatingBehavior should be bound to a Form component or a component that is inside a form!*” If I change it to: TextField textField = new TextField(“keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); * add(textField);* textField.add(new AjaxFormValidatingBehavior("blur")); It works. Basically the AjaxFormValidatingBehavior is expecting to find a form in it’s parent, but it’s parent hasn’t been assigned yet. Is this expected behavior? Thanks, Lon - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: AjaxFormValidatingBehavior on component
Uhh, that error message is right there on the AFVB’s onBind(): https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L102 The problem is that the check for a parent form is happening in onBind(), so when the behavior is attached to a component. In other words: you can only add AFVB to a component _after_ you have added that component to a Form. I suspect that the main reason for this is that this behavior is meant to be used on a whole form, not a single form component. Even when you attach it to a single component, it will always validate _all_ components in the form. See https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormValidatingBehavior.java#L117 The OP should probably be using a AjaxFormComponentUpdatingBehavior, adding any feedback panels in onUpdate() and onError(). Met vriendelijke groet, Kind regards, Bas Gooren Op 18 mei 2016 bij 11:29:26, Sven Meier (s...@meiers.net) schreef: Hi, I cannot find that error message in Wicket's source. Are you using org.apache.wicket.ajax.form.AjaxFormValidatingBehavior or some subclass or alternative? Have fun Sven On 18.05.2016 02:37, Lon Varscsak wrote: > Hey guys, I may be missing something here, but if I do: > > TextField textField = new TextField("keyCode", new PropertyModel<>( > order, OrderHeader.SOURCE_KEY_KEY)); > > textField.add(new AjaxFormValidatingBehavior("blur")); > > > * add(textField);* > > I get an error “*AjaxFormValidatingBehavior should be bound to a Form > component or a component that is inside a form!*” > > If I change it to: > > TextField textField = new TextField(“keyCode", new PropertyModel<>( > order, OrderHeader.SOURCE_KEY_KEY)); > > > * add(textField);* > > textField.add(new AjaxFormValidatingBehavior("blur")); > > It works. Basically the AjaxFormValidatingBehavior is expecting to find a > form in it’s parent, but it’s parent hasn’t been assigned yet. > > Is this expected behavior? > > Thanks, > > Lon > - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: AjaxFormValidatingBehavior on component
Hi, I cannot find that error message in Wicket's source. Are you using org.apache.wicket.ajax.form.AjaxFormValidatingBehavior or some subclass or alternative? Have fun Sven On 18.05.2016 02:37, Lon Varscsak wrote: Hey guys, I may be missing something here, but if I do: TextField textField = new TextField("keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); textField.add(new AjaxFormValidatingBehavior("blur")); * add(textField);* I get an error “*AjaxFormValidatingBehavior should be bound to a Form component or a component that is inside a form!*” If I change it to: TextField textField = new TextField(“keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); * add(textField);* textField.add(new AjaxFormValidatingBehavior("blur")); It works. Basically the AjaxFormValidatingBehavior is expecting to find a form in it’s parent, but it’s parent hasn’t been assigned yet. Is this expected behavior? Thanks, Lon - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
AjaxFormValidatingBehavior on component
Hey guys, I may be missing something here, but if I do: TextField textField = new TextField("keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); textField.add(new AjaxFormValidatingBehavior("blur")); * add(textField);* I get an error “*AjaxFormValidatingBehavior should be bound to a Form component or a component that is inside a form!*” If I change it to: TextField textField = new TextField(“keyCode", new PropertyModel<>( order, OrderHeader.SOURCE_KEY_KEY)); * add(textField);* textField.add(new AjaxFormValidatingBehavior("blur")); It works. Basically the AjaxFormValidatingBehavior is expecting to find a form in it’s parent, but it’s parent hasn’t been assigned yet. Is this expected behavior? Thanks, Lon