This is purely JS problem.
I don't find anything in the web that can do this automatically for you.
Here is a possible solution:
store the previous selected value in a custom attribute, e.g.
data-prev-index=...
then in the precondition code replace attrs.event.preventDefault() with :
var $select = $('#'+attrs.c); $select[0].selectedIndex =
$select.data("prev-index");


On Wed, Jul 24, 2013 at 2:10 PM, Marco Di Sabatino Di Diodoro <
marco.disabat...@tirasa.net> wrote:

> Hi Martin,
>
> attrs.event.preventDefault() not work. My DropDownChoice changes always.
>
> M
>
> Il giorno 24/lug/2013, alle ore 10:59, Martin Grigorov <
> mgrigo...@apache.org> ha scritto:
>
> > Hi,
> >
> >
> > On Wed, Jul 24, 2013 at 11:54 AM, Marco Di Sabatino Di Diodoro <
> > marco.disabat...@tirasa.net> wrote:
> >
> >> Hi all,
> >>
> >> I like implement a DropDownChoice with an Confirm Dialog.
> >> I used an AjaxFormComponentUpdatingBehavior("on change") to intercept
> the
> >> change in the DropDownChoice.
> >> In addition,  the user must first confirm the operation with a dialog
> >> before changing the value in the DropDownChoice.
> >>
> >> To do that I add an AjaxCallListeners:
> >>
> >>            @Override
> >>            protected void updateAjaxAttributes(final
> >> AjaxRequestAttributes attributes) {
> >>                super.updateAjaxAttributes(attributes);
> >>                final AjaxCallListener ajaxCallListener = new
> >> AjaxCallListener() {
> >>                    private static final long serialVersionUID =
> >> 7160235486520935153L;
> >>
> >>                    @Override
> >>                    public CharSequence getPrecondition(final Component
> >> component) {
> >>                        return "if (confirm('" +
> >> getString("confirmDelete") + "')) return false;";
> >>
> >
> > Try with:             return "if (confirm('" +
> getString("confirmDelete") +
> > "')) { attrs.event.preventDefault(); return false;}";
> >
> > The precondition just stops the Ajax call, but it has no logic to do
> > anything else.
> >
> >
> >>                    }
> >>                };
> >>                attributes.getAjaxCallListeners().add(ajaxCallListener);
> >>            }});
> >>
> >> When I click cancel on the Confirm Dialog, the DropDownChoice changes
> and
> >> I can not restore the old value.
> >> How I understand that the user clicked on Cancel? Is the correct way to
> >> implement this functionality?
> >>
> >> Best Regards
> >> M
> >>
> >> --
> >> 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 PMC Member
> >> http://people.apache.org/~mdisabatino/
> >>
> >>
>
> --
> 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 PMC Member
> http://people.apache.org/~mdisabatino/
>
>

Reply via email to