Как обновить атрибут Primefaces?

У меня есть <p:commandButton disabled="#{scannerStatus.disabled}" actionListener="#{scannerStatus.activate}" id="button-id"/>

В scannerStatus у меня есть:
private boolean disabled; // плюс геттеры и сеттеры

public void activate() {
        this.setDisabled(true);
        boolean status = doAnAction(); // This takes some seconds

        if (!status) {
            doSomething();
        } else {
            this.setDisabled(false);
        }
    }

Проблема в том, что disabled атрибут commandButton не изменяется при this.setDisabled(true) линия от activate метод называется.

Мне нужно несколько секунд disabled атрибут из commandButton должен быть true,

disabled свойство устанавливается обратно в ложь, а затем disabled атрибут из commandButton обновлен. Таким образом, обновление в commandButton происходит после завершения функции.

Как я могу обновить атрибут commandButton, когда this.setDisabled(true) в методе активировать?

Я пытался использовать
RequestContext.getCurrentInstance().update("button-id");
после this.setDisabled но это не работает

1 ответ

Не проверено, но что-то вроде этого должно сделать это:

<p:commandButton 
 actionListener="#{scannerStatus.activate}" 
 id="button-id"
 onstart="document.getElementById('button-id').disabled = true;"
 oncomplete="document.getElementById('button-id').disabled = false;" />
Другие вопросы по тегам