Калитка: AjaxLazyLoadPanel в форме - PullRequest
0 голосов
/ 05 апреля 2020

Я работаю с калиткой 8 и буду рад некоторой помощи! У меня есть форма с несколькими полями, сначала текст, а затем три раскрывающихся списка. Один из раскрывающихся списков очень тяжелый, и я обернул его в AjaxLazyLoadPanel.

Когда форма отображается, вместо тяжелого раскрывающегося списка показывается счетчик, и во время загрузки я не могу получить доступ к другим полям. Например, если я пытаюсь что-то набрать в текстовом поле, страница, кажется, не отвечает, и как только будет отображен выпадающий список Heavy, я увижу текст, введенный мной сразу.

Так должно быть, или я что-то пропустил? Мой выпадающий код выглядит так -

private Panel createLazyLoadPanel() {
    return new AjaxLazyLoadPanel<Component>("panel") {

        @Override
        public Component getLazyLoadComponent(String markupId) {
            Panel customPanel = new CustomPanel(markupId);
            customPanel.add(heavyDropDownField);
            return customPanel ;
        }

    };
}

Спасибо!

1 Ответ

2 голосов
/ 05 апреля 2020

это всего лишь идея, но, возможно, вам нужно выполнить тяжелую работу для heavyDropDownField в отдельном потоке (например, с ExecutorService) и переопределить AjaxLazyLoadPanel # isContentReady, чтобы решить, когда на самом деле HeavyDropDownField готов. Таким образом, вы должны избегать блокировки вашей страницы во время загрузки панели.

...