Прелоадер в приложении Wicket

В приложении калитки по событию поиска требуется несколько секунд, а иногда и минут, чтобы показать результат в виде длинных данных. Я хочу показать предварительный загрузчик, пока данные извлекаются из базы данных, чтобы дать пользователю знать, что происходит, когда он нажимает кнопку поиска. Я очень новичок в приложении калитки, не очень хорошо разбираюсь в вещах, но я нахожу AjaxLazyPreloader, но, как я уже сказал, я хочу показать предварительный загрузчик при вызове метода поиска... Я делюсь методом SearchSubmit...

private void processSearchSubmit(AjaxRequestTarget ajaxRequestTarget) {

        ajaxRequestTarget.add(tableHolder);
        ajaxRequestTarget.add(productTableHolder);
        if (zipcode == null) {
            ajaxRequestTarget
                    .appendJavaScript("$().toastmessage('showWarningToast','Please enter a zipcode')");
        } else if (!ZipCodeValidator.isValid(zipcode)) {
            useZones = true;
            currentZone = zipcode;
            ajaxRequestTarget.add(tableHolder);
            if (searchProduct != null) {
                ajaxRequestTarget.add(productTableHolder);
                if (lstProduct.getList().size() == 0) {
                    ajaxRequestTarget
                            .appendJavaScript("$().toastmessage('showErrorToast','Sorry! This product is not avialable .')");
                }
            }


        } else if (lstMerchants.getList().size() == 0) {
            ajaxRequestTarget
                    .appendJavaScript("$().toastmessage('showWarningToast','Sorry! There are currently no services')");
        }

        if (ZipCodeValidator.isValid(zipcode)) {
            ajaxRequestTarget.add(tableHolder);
            if (searchProduct != null && !searchProduct.equals("")) {
                ajaxRequestTarget.add(productTableHolder);
                if (lstProduct.getList().size() == 0) {
                    ajaxRequestTarget
                            .appendJavaScript("$().toastmessage('showErrorToast','Sorry! This product is not avialable in this zip code or zone.')");
                }
            }
        }
    }

Я хочу, чтобы при вызове этого метода до тех пор, пока он не получит данные результата, он должен показывать предварительный загрузчик или спиннер. Кто-нибудь может подсказать, как это сделать.??

2 ответа

Если вам нужно вызвать метод длительного выполнения, нажав кнопку, проверьте этот ответ. Вы также можете использовать AjaxLazyLoadPanel, проверьте это демо (это Java часть и HTML часть)

Либо используйте AjaxLazyLoadPanel, либо IndicatingAjaxLink/-Button. Оба будут хорошо работать в обычных или Ajax-вызовах.

Чтобы использовать AjaxLazyLoadPanel: создайте подкласс AjaxLazyLoadPanel, который загружает панель, которую вы хотите отобразить, и добавьте ее в AjaxRequest.

IndicatingAjaxLinks просто отображает счетчик, пока обрабатывается запрос, и может быть легко использован в вашем текущем приложении. Используйте это вместо кнопки / ссылки, которую вы сейчас используете для формы.

Другие вопросы по тегам