2015-08-27 2 views
4

Я хочу реализовать живой фильтр для списка с JSF 2, но при использовании события keyup так много запросов отправляется на сервер. Код выглядит следующим образом:Задержка события JSF ajax

<h:inputText id="filter_input" value="#{bean.filterText}"> 
    <f:ajax event="keyup" listener="#{bean.filter}" 
     render="@form:list" execute="@this" /> 
</h:inputText> 

ответ

6

f:ajax добавлена ​​поддержка Ajax задержки событий, начиная с JSF 2.2. Просто включите его в качестве атрибута с его значением в миллисекундах:

<f:ajax event="keyup" delay="1000" listener="#{someBean.doSomething}" 
    render="somefield" execute="@this" /> 

Смотри также:

0

Если вы используете предыдущая версия JSF, Pri meFaces поддерживает аналогичную функцию:

<p:ajax event="keyup" delay="1000" listener="#{someBean.doSomething}" 
     update="somefield" process="@this" /> 

Обратите внимание, что PrimeFace не использует атрибут render и не использовать execute. Используйте update и process вместо (хотя process="@this" является излишним потому что она находится уже значение по умолчанию для p:ajax)

вот документация: https://www.primefaces.org/docs/vdl/5.0/core/primefaces-p/ajax.html

И прочей пост, который связан: primefaces keyup event delay

+0

Это уже в принято и в 5 раз выше ответ! – Kukeltje

+0

мой плохой, хотя, мой ответ - версия PrimeFaces вместо основного JSF. Я уже столкнулся с ситуацией, когда я не мог задержать f: ajax, потому что мы использовали более старую версию JSF. Поверхности поддерживают задержку в течение более длительного времени. – Sirmyself

Смежные вопросы