Я использую 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 и обновляя содержимое в оверлейной панели, когда ответ приходит с сервера.
Это хороший подход или кто-нибудь знает другой способ решить эту неприятную проблему?
Спасибо, Пит