You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by pjacobsma <pj...@gmail.com> on 2010/10/08 22:18:32 UTC
AjaxFormComponentUpdatingBehavior Question
I have defined a dropdown using the AjaxFormComponentUpdatingBehavior for the
onchange event. When I look at the html generated, the Ajax call is
associated with both the onchange and the onblur events. I would like the
call to be done only on the onchange event, not the onblur event. Is there
a way to get Wicket to stop generating the onblur Ajax call?
Here is the code defining the dropdown:
endDateDropDown = new DropDownChoice<Date>("endDateDropDown", new
PropertyModel(viewHistoryCriteria, "endDate"),
ProcessDateContext.getSixtyDayRange());
endDateDropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") {
protected void onUpdate(AjaxRequestTarget target) {
if (criteriaDropDown.isEnabled()) {
populateCriteriaDropdown(target);
}
}
});
Here is the html generated which contains both the onchange and onblue event
calls:
<select valign="top" wicket:id="endDateDropDown"
name="criteriaPanel:endDateDropDown" id="endDateDropDown" onchange="var
wcall=wicketAjaxPost('?wicket:interface=:1:historyForm:criteriaPanel:endDateDropDown::IBehaviorListener:0:',
wicketSerialize(Wicket.$('endDateDropDown')),null,null, function() {return
Wicket.$('endDateDropDown') != null;}.bind(this));" onblur="var
wcall=wicketSubmitFormById('historyFormc',
'?wicket:interface=:1:historyForm:criteriaPanel:endDateDropDown::IActivePageBehaviorListener:1:&wicket:ignoreIfNotActive=true',
null,null,null, function() {return
Wicket.$$(this)&&Wicket.$$('historyFormc')}.bind(this));;">
Thanks for your help with this.
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-Question-tp2968982p2968982.html
Sent from the Users forum 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
Re: AjaxFormComponentUpdatingBehavior Question
Posted by pjacobsma <pj...@gmail.com>.
Doh! Never mind. I just discovered that buried in my Page was this piece of
code: AjaxFormValidatingBehavior.addToAllFormComponents(form,"onblur");
That's what was adding the onblur call to the dropdown.
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-Question-tp2968982p2990385.html
Sent from the Users forum 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
Re: AjaxFormComponentUpdatingBehavior Question
Posted by pjacobsma <pj...@gmail.com>.
Again, I can offer a hack :D
public class DoSomeHackBehavior extends AbstractBehavior {
private static final long serialVersionUID = 3554634545756435367L;
@Override
public void onComponentTag(Component component, ComponentTag tag) {
FormComponent<?> comp = (FormComponent<?>) component;
tag.getAttributes().remove("onblur");
}
}
}
after that, you can add this behaviour to any component
component.add(new DoSomeHackBehaviour());
:D
I have found that Wicket adds an onblur Ajax call to every HTML event you
can define for the AjaxFormComponentUpdatingBehavior on a DropDownChoice
control. I haven't tested this on other controls. This means your server
will be getting an extra Ajax call each time a user moves focus away from
the dropdown, even if they didn't change the dropdown selection. This
seems like a bug.
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-Question-tp2968982p2990266.html
Sent from the Users forum 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
Re: AjaxFormComponentUpdatingBehavior Question
Posted by pjacobsma <pj...@gmail.com>.
meduolis wrote:
>
> Again, I can offer a hack :D
>
> public class DoSomeHackBehavior extends AbstractBehavior {
>
> private static final long serialVersionUID = 3554634545756435367L;
>
> @Override
> public void onComponentTag(Component component, ComponentTag tag) {
> FormComponent<?> comp = (FormComponent<?>) component;
> tag.getAttributes().remove("onblur");
> }
> }
>
> }
>
> after that, you can add this behaviour to any component
>
> component.add(new DoSomeHackBehaviour());
>
> :D
>
Thanks again. But unfortunately the onblur Ajax called survived.
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-Question-tp2968982p2990115.html
Sent from the Users forum 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
Re: AjaxFormComponentUpdatingBehavior Question
Posted by meduolis <me...@gmail.com>.
Again, I can offer a hack :D
public class DoSomeHackBehavior extends AbstractBehavior {
private static final long serialVersionUID = 3554634545756435367L;
@Override
public void onComponentTag(Component component, ComponentTag tag) {
FormComponent<?> comp = (FormComponent<?>) component;
tag.getAttributes().remove("onblur");
}
}
}
after that, you can add this behaviour to any component
component.add(new DoSomeHackBehaviour());
:D
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-Question-tp2968982p2969053.html
Sent from the Users forum 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
Re: AjaxFormComponentUpdatingBehavior Question
Posted by pjacobsma <pj...@gmail.com>.
meduolis wrote:
>
> I dont know if it works, but you can try to make a hack :)
>
> endDateDropDown = new DropDownChoice<Date>("endDateDropDown", new
> PropertyModel(viewHistoryCriteria, "endDate"),
> ProcessDateContext.getSixtyDayRange());
> endDateDropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") {
> protected void onUpdate(AjaxRequestTarget target) {
> if (criteriaDropDown.isEnabled()) {
> populateCriteriaDropdown(target);
> }
> }
> });
> endDateDropDown.add(new AjaxFormComponentUpdatingBehavior("onblur") {
> protected void onUpdate(AjaxRequestTarget target) {
> // do nothing
> }
> });
>
>
Thanks for your reply. I tried your suggestion, but Wicket still wrote an
Ajax call for the onblur event. I would like to eliminate that call.
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-Question-tp2968982p2969030.html
Sent from the Users forum 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
Re: AjaxFormComponentUpdatingBehavior Question
Posted by meduolis <me...@gmail.com>.
I dont know if it works, but you can try to make a hack :)
endDateDropDown = new DropDownChoice<Date>("endDateDropDown", new
PropertyModel(viewHistoryCriteria, "endDate"),
ProcessDateContext.getSixtyDayRange());
endDateDropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") {
protected void onUpdate(AjaxRequestTarget target) {
if (criteriaDropDown.isEnabled()) {
populateCriteriaDropdown(target);
}
}
});
endDateDropDown.add(new AjaxFormComponentUpdatingBehavior("onblur") {
protected void onUpdate(AjaxRequestTarget target) {
// do nothing
}
});
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AjaxFormComponentUpdatingBehavior-Question-tp2968982p2969013.html
Sent from the Users forum 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