Hi,
I am using a close browser behavior to clean up user data if the user closes
the browser window. I also use a CheckBox to toggle the visibility of some
Textfields. Unfortunately the refresh through the click of the CheckBox
triggers the close browser
behavior. How can this be avoided?
Here is what I did (with wicket 6.12.0):


customerFirstName = new RequiredTextField<String>("customer.firstName");
customerFirstName.setOutputMarkupPlaceholderTag(true);
closeBrowserBehavior =  new AbstractDefaultAjaxBehavior() {
           @Override
            protected void respond(AjaxRequestTarget target) {

AppointmentSession.get().releaseSavedBlockedFreeCalendarEvent();
            }

            @Override
            public void renderHead(Component component, IHeaderResponse
                    response) {
                super.renderHead(component, response);
                response.render(new
                        OnDomReadyHeaderItem("window.onbeforeunload =
function (e) {"
                                + "if (!window.dontAsk) {"
                                + "Wicket.Ajax.get({u:
'"+getCallbackUrl()+"', async: false});"
                                + "var message = 'my message.',"
                                + "e = e || window.event;" + "if (e) {"
                                + "e.returnValue = message;" + "}}" +
"return message;"
                                +
                                "};"));
            }
        };
customerFirstName.add(closeBrowserBehavior);
form.add(customerFirstName);

createAccountCB = new CheckBox("createAccountCB", new
Model<Boolean>(createAccount)){
            @Override
            protected void onSelectionChanged(Boolean newSelection) {
                super.onSelectionChanged(newSelection);
                createAccount = !createAccount;
            }

            @Override
            protected boolean wantOnSelectionChangedNotifications()
            {
                return true;
            }
        };
form.add(createAccountCB);

emailRepeat = new TextField<String>("emailRepeat", new
PropertyModel<String>(appointCalendar, customer.eMailAdress")){
          @Override
            protected void onConfigure(){
                super.onConfigure();
                setVisibilityAllowed(createAccount);
            }
            }
        };
emailRepeat.setOutputMarkupPlaceholderTag(true);
form.add(emailRepeat):

Thanks a lot in advance!
Best Regards
Daniela

Reply via email to