Wicket 1.6.0 beta + JavaScript Confirm-Dialog

In meiner Wicket-Anwendung besteht die Möglichkeit Datensätze über einen AjaxLink zu löschen. Damit da nicht aus versehen drauf geklickt wird, gibt es vorher noch einen Dialog, ob man den Datensatz auch wirklich löschen möchte. Das sah unter Wicket 1.5 wie folgt aus:

        AjaxLink deleteLink = new AjaxLink("deleteLink") {

            @Override
            public void onClick(final AjaxRequestTarget target) {
                //[Datensatz löschen]
            }

            @Override
            protected IAjaxCallDecorator getAjaxCallDecorator() {
                return new AjaxCallDecorator() {

                    @Override
                    public CharSequence decorateScript(final Component c, final CharSequence script) {
                        return "if(!confirm('Soll dieser Datensatz wirklich gelöscht werden?')) return false;" + script;
                    }
                };
            }
        };
 

Das funktioniert unter Wicket 1.6 nicht mehr, da es keine CallDecorator mehr gibt. Statt dessen müssen wir einen Listener registrieren, so dass der Code wie folgt aussieht:

        AjaxLink deleteLink = new AjaxLink("deleteLink") {

            @Override
            public void onClick(final AjaxRequestTarget target) {
                //[Datensatz löschen]
            }

            @Override
            protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
                super.updateAjaxAttributes(attributes);

                AjaxCallListener myAjaxCallListener = new AjaxCallListener() {

                    @Override
                    public CharSequence getPrecondition(Component component) {
                        return "if (!confirm('Soll dieser Datensatz wirklich gelöscht werden ?')) return false;" + super.getPrecondition(component);
                    }
                };
                attributes.getAjaxCallListeners().add(myAjaxCallListener);
            }
        };

Ein Gedanke zu „Wicket 1.6.0 beta + JavaScript Confirm-Dialog“

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>