You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Gabriel Landon <gl...@piti.pf> on 2020/02/15 00:04:06 UTC
Calling an async third party function when submitting an AjaxButton
Hi,
In a form I have a form with an AjaxButton.
On the button's click I would like to be able to call an async third party
javascript function(recaptcha V3).
Is there a way to call it and in the "then" function do the wicket's ajax
call.
Something like :
grecaptcha.execute('<publicCaptchaKey>', {<options>}).then(<do the wicket
ajax call >);
I did not find a way to do it with IAjaxCallListener.
I'm using wicket 7.
In wicket 1.5, I think that might have been possible like that:
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new AjaxCallDecorator() {
@Override
public CharSequence decorateScript(Component c, CharSequence script) {
return "grecaptcha.execute('publicCaptchaKey', {action:
'action'}).then(function(token) { "
+ <do_some_stuff>
+ script <--- wicket ajax
+ "}) ";
}
};
}
regards,
Gabriel.
--
Sent from: http://apache-wicket.1842946.n4.nabble.com/Users-forum-f1842947.html
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Calling an async third party function when submitting an AjaxButton
Posted by Andrei Kondratev <an...@unimarket.com>.
Shure you can always add a subclass of DefaultAjaxBehavior, get a callback
url from this behavior and call this URL with wicket ajax later.
Somewhat like this:
AbstractDefaultAjaxBehavior ajaxBehavior = new AbstractDefaultAjaxBehavior() {
@Override
public void respond(@NotNull AjaxRequestTarget target) {
String myParam =
RequestCycle.get().getRequest().getPostParameters().getParameterValue("my_param").toString();
// do stuff here, add something to target
}
};
component.add(ajaxBehavior);
// in your component
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(OnDomReadyHeaderItem.forScript("initMyStuff('"+ajaxBehavior.getCallbackUrl()+"');"));
}
// in JS
function initMyStuff(yourCallbackUrl) {
doThirdPartyStuff().then(function () {
Wicket.Ajax.post({
u: yourCallbackUrl,
ep: {"my_param": "something"},
fh: [function (attrs, jqXHR, errorMessage, textStatus) {/*
handle failure here */
}],
sh: [function (attrs, jqXHR, data, status) {/* handle
success here */
}],
});
});
}
On Sat, 15 Feb 2020 at 13:04, Gabriel Landon <gl...@piti.pf> wrote:
> Hi,
>
> In a form I have a form with an AjaxButton.
> On the button's click I would like to be able to call an async third party
> javascript function(recaptcha V3).
>
> Is there a way to call it and in the "then" function do the wicket's ajax
> call.
> Something like :
> grecaptcha.execute('<publicCaptchaKey>', {<options>}).then(<do the wicket
> ajax call >);
>
> I did not find a way to do it with IAjaxCallListener.
> I'm using wicket 7.
>
> In wicket 1.5, I think that might have been possible like that:
> protected IAjaxCallDecorator getAjaxCallDecorator() {
> return new AjaxCallDecorator() {
> @Override
> public CharSequence decorateScript(Component c, CharSequence script)
> {
> return "grecaptcha.execute('publicCaptchaKey', {action:
> 'action'}).then(function(token) { "
> + <do_some_stuff>
> + script <--- wicket ajax
> + "}) ";
> }
> };
> }
>
> regards,
>
> Gabriel.
>
> --
> Sent from:
> http://apache-wicket.1842946.n4.nabble.com/Users-forum-f1842947.html
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>