wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Grigorov <mgrigo...@apache.org>
Subject Re: Precondition Check
Date Thu, 06 Feb 2014 14:39:06 GMT
So the check fails here
https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js?source=c#L511
the form is not there ...

Thanks for sharing!

Martin Grigorov
Wicket Training and Consulting


On Thu, Feb 6, 2014 at 3:35 PM, Richter, Marvin <
Marvin.Richter@jestadigital.com> wrote:

> Ok, that would be a valid scenario where that makes sense but that's not
> the case.
>
> But I found the problem:
> Because of the the childing of my panels the one that was not working was
> inside a <form> tag but this panel also contains a form.
>
> As of the HTML specification it is not allowed to nest forms ...
>
> Chrome and FF are so failure tolerant that while rendering they just
> ignore it. But the Submit will not work anymore ...
>
> Marvin Richter
> Software Developer
> T  +49 (0) 30 69 538 1099
> M  +49 (0) 174 744 4991
> marvin.richter@jestadigital.com
>
> JESTA DIGITAL GmbH   Karl-Liebknecht-Str. 32   10178 Berlin, Germany
> Gesellschaft mit beschränkter Haftung mit Sitz in Berlin
> HRB Nr. 97990 Amtsgericht Charlottenburg
> Geschäftsführer: Markus Peuler
>
>
> -----Original Message-----
> From: Martin Grigorov [mailto:mgrigorov@apache.org]
> Sent: Thursday, February 06, 2014 3:22 PM
> To: users@wicket.apache.org
> Subject: Re: Precondition Check
>
> you can click on it and the event listener can delay the actual Ajax call
> as much as it wants (Wicket's AjaxChannel.QUEUE does exactly this).
>
> E.g. click two times on the link, the first click fires Ajax call (the
> second click waits), its response removes the link from the DOM (or
> replaces it), then the second click event will be prevented because its
> event.target is no more in the DOM
>
>
> Martin Grigorov
> Wicket Training and Consulting
>
>
> On Thu, Feb 6, 2014 at 3:13 PM, Richter, Marvin <
> Marvin.Richter@jestadigital.com> wrote:
>
> > That is the point I don't get ... how can an element doesn't exist in
> > DOM but I can click on it?
> >
> > Marvin Richter
> >
> >
> > -----Original Message-----
> > From: Martin Grigorov [mailto:mgrigorov@apache.org]
> > Sent: Thursday, February 06, 2014 3:05 PM
> > To: users@wicket.apache.org
> > Subject: Re: Precondition Check
> >
> > Hi,
> >
> > I see you don't have custom AjaxRequestAttributes, so no custom
> > preconditions.
> > Wicket has just one default precondition - it will execute the Ajax
> > call only if the related HTML element (the link) is in the current
> document.
> >
> >
> > https://github.com/apache/wicket/blob/master/wicket-core/src/main/java
> > /org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js?source=c#L508
> >
> > Put a breakpoint in Dev Tools/Firebug and see why the link is not in
> > the document.
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> >
> >
> > On Thu, Feb 6, 2014 at 2:50 PM, Richter, Marvin <
> > Marvin.Richter@jestadigital.com> wrote:
> >
> > > Args ... I already had this problem some time ago but I can't
> > > remember what it was exactly.
> > >
> > > Wicket Ajax Debug:
> > > INFO: Ajax request stopped because of precondition check, url:
> > > ./admin?1-5.IBehaviorListener.1-configTypes-panel-dialog-footer-butt
> > > on
> > > s-0-button
> > >
> > > I have two different Panels with almost the same functionality ...
> > > creating a new Object and persist it. One is working fine but the
> > > other one not.
> > >
> > > Works:
> > > private Component save(final Form<ConfigType> form) {
> > >         return new AjaxSubmitLink(BUTTON_MARKUP_ID, form) {
> > >
> > >                     @Override
> > >                     protected void onSubmit(AjaxRequestTarget
> > > target, Form<?> f) {
> > >                         Logger log =
> > > LoggerFactory.getLogger(EditConfigTypeDialog.class);
> > >                         ConfigManager cm =
> > > EjbSupportImpl.getInstance().getConfigManager();
> > >                         ConfigType configType = form.getModelObject();
> > >                         if (configType.getId() != null) {
> > >                             try {
> > >                                 ConfigType updated =
> > > cm.updateConfigType(configType);
> > >                                 form.success("Successfully updated
> > > the ConfigType.");
> > >                                 form.setModelObject(updated);
> > >                             } catch (CcaException ex) {
> > >                                 form.error("Failed to update
> > ConfigType");
> > >                                 log.error("Failed to update
> > > ConfigType", ex);
> > >                             }
> > >                         } else {
> > >                             try {
> > >                                 ConfigType created =
> > > cm.addConfigType(configType);
> > >                                 form.success("Successfully created
> > > the ConfigType.");
> > >                                 form.setModelObject(created);
> > >                             } catch (CcaException ex) {
> > >                                 form.error("Failed to create
> > ConfigType");
> > >                                 log.error("Failed to create
> > > ConfigType", ex);
> > >                             }
> > >                         }
> > >                         target.add(form);
> > >                     }
> > >
> > >                     @Override
> > >                     protected void onError(AjaxRequestTarget target,
> > > Form<?> form) {
> > >                         target.add(form);
> > >                     }
> > >
> > >                     @Override
> > >                     public void onComponentTagBody(MarkupStream
> > > markupStream, ComponentTag openTag) {
> > >                         replaceComponentTagBody(markupStream,
> > > openTag, "Save");
> > >                     }
> > >                 }.add(new ButtonBehavior(Buttons.Type.Primary));
> > >     }
> > >
> > > Doesn't work:
> > > private Component save(final Form<ConfigKey> form) {
> > >         return new AjaxSubmitLink(BUTTON_MARKUP_ID, form) {
> > >
> > >                     @Override
> > >                     protected void onSubmit(AjaxRequestTarget
> > > target, Form<?> f) {
> > >                         Logger log =
> > > LoggerFactory.getLogger(EditConfigKeyDialog.class);
> > >                         ConfigManager cm =
> > > EjbSupportImpl.getInstance().getConfigManager();
> > >                         ConfigKey configKey = form.getModelObject();
> > >                         if (configKey.getId() != null) {
> > >                             try {
> > >                                 ConfigKey updated =
> > > cm.updateConfigKey(configKey);
> > >                                 form.success("Successfully updated
> > > the ConfigKey");
> > >                                 form.setModelObject(updated);
> > >                             } catch (CcaException ex) {
> > >                                 form.error("Failed to update
> ConfigKey");
> > >                                 log.error("Failed to update
> > > ConfigKey", ex);
> > >                             }
> > >                         } else {
> > >                             try {
> > >                                 ConfigKey created =
> > > cm.addConfigKey(configKey);
> > >                                 form.success("Successfully created
> > > the ConfigKey");
> > >                                 form.setModelObject(created);
> > >                             } catch (CcaException ex) {
> > >                                 form.error("Failed to create
> ConfigKey");
> > >                                 log.error("Failed to create
> > > ConfigKey", ex);
> > >                             }
> > >                         }
> > >                         target.add(form);
> > >                     }
> > >
> > >                     @Override
> > >                     protected void onError(AjaxRequestTarget target,
> > > Form<?> form) {
> > >                         target.add(form);
> > >                     }
> > >
> > >                     @Override
> > >                     public void onComponentTagBody(MarkupStream
> > > markupStream, ComponentTag openTag) {
> > >                         replaceComponentTagBody(markupStream,
> > > openTag, "Save");
> > >                     }
> > >                 }.add(new ButtonBehavior(Buttons.Type.Primary));
> > >     }
> > >
> > > I don't see a big difference why the other wouldn't work. You?
> > >
> > >
> > > Marvin Richter
> > > Software Developer
> > > T  +49 (0) 30 69 538 1099
> > > M  +49 (0) 174 744 4991
> > > marvin.richter@jestadigital.com<mailto:marvin.richter@jestadigital.c
> > > om
> > > >
> > >
> > > JESTA DIGITAL GmbH   Karl-Liebknecht-Str. 32   10178 Berlin, Germany
> > > Gesellschaft mit beschränkter Haftung mit Sitz in Berlin HRB Nr.
> > > 97990 Amtsgericht Charlottenburg
> > > Geschäftsführer: Markus Peuler
> > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message