Прелоадер в приложении 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 просто отображает счетчик, пока обрабатывается запрос, и может быть легко использован в вашем текущем приложении. Используйте это вместо кнопки / ссылки, которую вы сейчас используете для формы.