Hi Martin,
On Sep 5, 2012, at 12:20 PM, Martin Grigorov wrote:
> Hi Marco,
>
> I see a quite simple solution with Wicket 6 for this. I think you just
> start with your project (or even this is just a prototype?) so you
> better use "the latest and greatest" :-)
We can not upgrade to Wicket 6 in this moment.
>
> What I mean is to use the new AjaxChannel.Type.Active. The active type
> prevents a second Ajax call in the same channel while there is a still
> running Ajax call in this channel.
>
> The code is as simple as:
>
> @Override
> protected void updateAjaxAttributes(AjaxRequestAttributes attrs) {
> super.updateAjaxAttributes(attrs);
>
> attrs.setAjaxChannel(new AjaxChannel("modalClose", Type.Active));
> }
>
> For more about the goodies in Wicket 6 read:
> http://wicketinaction.com/2012/07/wicket-6-javascript-improvements/
>
> In Wicket 1.5 you will have to add some custom JavaScript to prevent
> the second request. You can unbind the event, or add a flag for
> example.
I tried to use unbind() and flag but always return me the same error. How can I
prevent the second request?
Thanks
Marco
>
> On Wed, Sep 5, 2012 at 12:04 PM, Marco Di Sabatino Di Diodoro
> <[email protected]> wrote:
>> Hi all,
>>
>> I configure into Apache Syncope the possibility to close ModalWindow with
>> ESC key press event.
>>
>> public class CloseOnESCBehavior extends AbstractDefaultAjaxBehavior {
>>
>> private static final long serialVersionUID = 5826308247642534260L;
>> private ModalWindow modalWindow;
>>
>> public CloseOnESCBehavior(ModalWindow modalWindow) {
>> this.modalWindow = modalWindow;
>> }
>>
>> private static final String PRE_JS = "$(document).ready(function() {\n"
>> + "$(document).bind('keyup', function(evt) {\n"
>> + " if (evt.keyCode == 27){\n";
>>
>> private static final String POST_JS = "\n evt.preventDefault();\n"
>> + "evt.stopImmediatePropagation();\n"
>> + " }\n"
>> + " });\n"
>> + "});";
>>
>> @Override
>> protected void respond(final AjaxRequestTarget target) {
>> modalWindow.close(target);
>> }
>>
>> @Override
>> protected String findIndicatorId() {
>> return null;
>> }
>>
>> @Override
>> public void renderHead(final Component component, final IHeaderResponse
>> response) {
>> response.renderJavaScript(new
>> StringBuilder(PRE_JS).append(getCallbackScript())
>> .append(POST_JS).toString(),
>> "closeModalOnEsc");
>> }
>>
>> In the modal page:
>>
>> add(new CloseOnESCBehavior(window));
>>
>> It work correctly with Chrome and Safari. With Firefox, if I press the ESC
>> key twice quickly before the window closes the console return an error:
>>
>> ERROR: Wicket.Ajax.Call.failure: Error while parsing response: Could not
>> find root <ajax-response> element
>>
>> Regards
>> Marco
>>
>>
>> --
>>
>> Dott. Marco Di Sabatino Di Diodoro
>> Tel. +39 3939065570
>>
>> Tirasa S.r.l.
>> Viale D'Annunzio 267 - 65127 Pescara
>> Tel +39 0859116307 / FAX +39 0859111173
>> http://www.tirasa.net
>>
>> Apache Syncope PPMC Member
>> http://people.apache.org/~mdisabatino
>>
>>
>>
>>
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
--
Dott. Marco Di Sabatino Di Diodoro
Tel. +39 3939065570
Tirasa S.r.l.
Viale D'Annunzio 267 - 65127 Pescara
Tel +39 0859116307 / FAX +39 0859111173
http://www.tirasa.net
Apache Syncope PPMC Member
http://people.apache.org/~mdisabatino