Проблема задержки с оверлейной панелью Primefaces -ленивая загрузка

Я использую Primefaces 3.2 с jsf 2 и Glassfish 3.1.2.

У меня есть p :dataTable пользователей, содержащая аватары пользователя. Всякий раз, когда пользователь наводит указатель мыши на аватар, появляется p :overlayPanel с дополнительной информацией (lazy load )о пользователе и исчезает, когда пользователь отводит курсор -вот так:

<p:overlayPanel for="avatar" dynamic="true" showEvent="mouseover" hideEvent="mouseout"...>

Это работает очень хорошо -, пока пользователь «медлителен». Всякий раз, когда пользователь быстро перемещает курсор над множеством аватаров, многие из оверлейных панелей остаются видимыми. Например, когда пользователь наводит курсор на позицию, где отображаются пользовательские аватары, и использует колесо прокрутки своей мыши для прокрутки таблицы пользователя вниз или вверх.

Я считаю, что оверлейная панель начинает динамически подгружать информацию(dynamic="true")с сервера при отправке showEvent="mouseover"и отображает оверлейную панель после получения ответа от сервера. Таким образом, невозможно определить, находится ли курсор уже вдали, когда оверлейная панель становится видимой -, поэтому hideEvent="mouseout"никогда не отправляется.

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

Это хороший подход или кто-нибудь знает другой способ решить эту неприятную проблему?

Спасибо, Пит

8
задан Del Pedro 10 August 2012 в 12:52
поделиться