Список привязки к датируемым после загрузки страниц (не ленивая загрузка) - PullRequest
0 голосов
/ 11 января 2011

На нашей странице есть таблица данных, которая показывает записи из веб-службы. Веб-сервис запрашивает базу данных, и запрос может занять от 10 секунд до 100 секунд.

Первоначально я загружал массив списков данных, связанный с данными в конструкторе базовых компонентов:

private ArrayList myList;
public MyBean
{
     myList = WebServices.getList();
}

В этом случае вся страница начинает отображаться только после того, как веб-служба возвращает все данные.

Куда мне обратиться в веб-службу (т. Е. Сделать myList = WebServices.getList();), чтобы остальная часть страницы загружалась параллельно, и чтобы во время работы веб-службы отображался индикатор выполнения или что-то в таблице данных?

Полагаю, мои представления о жизненном цикле JSF / IceFaces не ясны ...

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

Спасибо!

1 Ответ

0 голосов
/ 13 января 2011

Я нашел способ использования потоков.

public class MyBean
{
    private ArrayList myList;
    private PersistentFacesState state;

    public MyBean
    {
        state = PersistentFacesState.getInstance();
        myList = new ArrayList();
        new Thread(new RunService()).start();
    }

    public class RunService implements Runnable
    {
        public void run()
        {
            try
            {
                list = WebServices.getList();
                state.executeAndRender(); //Need to do this to update view

            }
            catch(Exception e)
            {

            }
        }

    }
}

Изначально я не знал о PersistentFacesState и executeAndRender();, поэтому, хотя поток обновлял список массивов, представление не обновлялось. Это произошло потому, что жизненный цикл JSF / IceFaces уже закончился.

Сохранение представления и его повторная визуализация также решили эту проблему.

Надеюсь, это решение кому-нибудь поможет.

...