Re: How to determine which behavior corresponds to the currently handled request target
you can always override getcallbackurl() and append a marker parameter you can use to differentiate between the different modes. -igor On Mon, Jul 27, 2009 at 12:31 PM, Vladimir K wrote: > > I'm trying to add AjaxFormComponentUpdating behavior to FormComponentPanel. > The latter is inherintly not suited for Ajax requests. So I have to use > some workarounds to update model of FormComponentPanel by ajax update on > "onblur" js event on inner input, see code posted here. It works for now but > I'm afraid I should bypass updating of model when whole form is submitted > via ajax. So I'm trying to figure out what particular behavior is in > progress. > > From the other hand you probably know different way how to add > AjaxFormComponentUpdatingBehaviour to DateField component. Any thoughts are > welcome. > > > igor.vaynberg wrote: >> >> you can use AjaxRequestTarget.get() to see if an ajax request is being >> processed. >> >> -igor >> >> On Mon, Jul 27, 2009 at 5:41 AM, Vladimir K wrote: >>> >>> Could anyone shed light on that? >>> -- >>> View this message in context: >>> http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html >>> Sent from the Wicket - User mailing list archive at Nabble.com. >>> >>> >>> - >>> 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 >> >> >> > > -- > View this message in context: > http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24686879.html > Sent from the Wicket - User mailing list archive at Nabble.com. > > > - > 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: How to determine which behavior corresponds to the currently handled request target
I'm trying to add AjaxFormComponentUpdating behavior to FormComponentPanel. The latter is inherintly not suited for Ajax requests. So I have to use some workarounds to update model of FormComponentPanel by ajax update on "onblur" js event on inner input, see code posted here. It works for now but I'm afraid I should bypass updating of model when whole form is submitted via ajax. So I'm trying to figure out what particular behavior is in progress. >From the other hand you probably know different way how to add AjaxFormComponentUpdatingBehaviour to DateField component. Any thoughts are welcome. igor.vaynberg wrote: > > you can use AjaxRequestTarget.get() to see if an ajax request is being > processed. > > -igor > > On Mon, Jul 27, 2009 at 5:41 AM, Vladimir K wrote: >> >> Could anyone shed light on that? >> -- >> View this message in context: >> http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> - >> 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 > > > -- View this message in context: http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24686879.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: How to determine which behavior corresponds to the currently handled request target
you can use AjaxRequestTarget.get() to see if an ajax request is being processed. -igor On Mon, Jul 27, 2009 at 5:41 AM, Vladimir K wrote: > > Could anyone shed light on that? > -- > View this message in context: > http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html > Sent from the Wicket - User mailing list archive at Nabble.com. > > > - > 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: How to determine which behavior corresponds to the currently handled request target
Could anyone shed light on that? -- View this message in context: http://www.nabble.com/How-to-determine-which-behavior-corresponds-to-the-currently-handled--request-target-tp24635282p24680015.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
How to determine which behavior corresponds to the currently handled request target
I'm trying to design a joda time based DateTime field. There are two reasons - I use joda time only - I have to wire tree components - start date, finish date and duration, so I have to add I managed to get it working but I'm concerned about the approach I took. So please critics are welcome. Below is the source code of the component. My question is about the isAjaxRequest() method. I believe I should check whether the AjaxFormComponentUpdatingBehavior's request target is handled. But I don't know how. Please suggest. import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.wicket.Component; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.datetime.DateConverter; import org.apache.wicket.datetime.StyleDateConverter; import org.apache.wicket.datetime.markup.html.form.DateTextField; import org.apache.wicket.extensions.yui.calendar.DateField; import org.apache.wicket.markup.html.form.FormComponentPanel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.protocol.http.WebRequest; import org.joda.time.DateTime; public class JodaDateField extends FormComponentPanel { protected class LocalDateField extends DateField { protected final class LocalDateTextField extends DateTextField { public LocalDateTextField(String id, IModel model, DateConverter converter) { super(id, model, converter); } @Override protected void onModelChanged() { super.onModelChanged(); if (isAjaxRequest()) { Date date = getModelObject(); LocalDateField.this.setModelObject(date); } } } public LocalDateField(String id, IModel model) { super(id, model); } @Override protected DateTextField newDateTextField(String id, PropertyModel dateFieldModel) { @SuppressWarnings("unchecked") IModel model = dateFieldModel; return new LocalDateTextField(id, model, new StyleDateConverter(true)); } @Override protected void onModelChanged() { super.onModelChanged(); if (isAjaxRequest()) { Date date = getModelObject(); JodaDateField.this.setModelObject(date == null ? null : new DateTime(date)); } } } private DateField dateField;; public JodaDateField(String id, IModel model) { super(id, model); dateField = new LocalDateField("field", new Model()); add(dateField); } @Override public Component add(IBehavior... behaviors) { List correct = new ArrayList(); for (IBehavior behavior : behaviors) { if (behavior instanceof AjaxFormComponentUpdatingBehavior) dateField.get("date").add(behavior); else correct.add(behavior); } return super.add(correct.toArray(new IBehavior[correct.size()])); } @Override protected void convertInput() { Date date = dateField.getConvertedInput(); setConvertedInput(date == null ? null : new DateTime(date)); } @Override public String getInput() { return dateField.getInput(); } private boolean isAjaxRequest() { return getRequest() instanceof WebRequest && ((WebRequest) getRequest()).isAjax(); } @Override protected void onBeforeRender() { DateTime date = getModelObject(); dateField.setDate(date == null ? null : date.toDate()); dateField.setRequired(isRequired()); super.onBeforeRender(); } }