update="" вызывается на каждом интервале. Есть ли способ вызвать обновление только тогда, когда опрос остановлен, и только один раз?
Пример: Как мне обновить кнопка-фрагмент только один раз, когда опрос остановится?
<p:poll interval = "2" update = "@(.button-fragment)" stop = "#{stopMethod()}">
Обновлено: я хотел бы сделать это из представления
Невозможно сделать это только с компонентами Primefaces?
Да, javascript и удаленная команда... Но только не с опросом. Поскольку это очень, очень необычный вариант использования, а компоненты имеют только те функции, которые используются регулярно. Вы первый, кто попросит об этом
Чтобы продолжить: независимо от того, найдете ли вы решение своей проблемы, регистрация запроса функции для Primefaces для добавления «завершенного» или «остановленного» слушателя для p:poll
кажется мне действительным запросом!
Помимо того, что ваш опрос никогда не прекращается, я бы сделал что-то похожее на
<p:poll interval = "2" stop = "isPollStopped()" listener = "updateOnPollStop()">
и в представлении bean
public boolean isPollStopped() {
return ...;
}
public void updateOnPollStop() {
final boolean pollStopped = this.isPollStopped();
if (pollStopped) {
RequestContext.getCurrentInstance().update("@(.button-fragment)");
}
}
Редактировать:
Полностью не проверено, но, возможно, это может сработать:
<p:poll interval = "2" oncomplete = "handlePollComplete(xhr, status, args)" stop = "#{stopMethod()}">
function handlePollComplete(xhr, status, args) {
if (!PF(<YOUR_POLL_ID>).active) {
PF(<YOUR_UPDATEE_ID>).update()
}
}
Изменить 2 (используя remoteCommand
)
<p:remoteCommand name = "updateOnPollStop" update = "@(.button-fragment)"/>
<p:poll widgetVar = "myPoll" interval = "2" oncomplete = "handlePollComplete(xhr, status, args)" stop = "#{stopMethod()}">
function handlePollComplete(xhr, status, args) {
if (!PF('myPoll').active) {
updateOnPollStop()
}
}
Спасибо за ответ! Я хотел бы сделать все это из представления, если это возможно. я обновил описание
Ой? Никогда ничего нового о PF('@(.button-fragment)').update()
Надо попробовать в ближайшее время. Отличная функция!
@Kukeltje не уверен в том, что я впервые ссылаюсь на виджет для обновления, поэтому я отредактировал свой ответ,
Обратите внимание, что PF принимает widgetVar, а не clientId.
Вы уверены, что вам не нужен Primefaces.github.io/primefaces/7_0/#/ajax/javascriptApi для обновления компонентов? Я не могу найти функцию обновления в коде JS виджета.
Затем сделайте то же самое, но в javascript ... но вам нужно сообщить серверу, что вам нужна удаленная команда. Или... переопределите реализацию javascript опроса "стоп", чтобы провести окончательный опрос