0

私は<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);
        }
    }

問題は、line fromメソッドが呼び出されdisabledたときに commandButton の属性が変更されないことです。this.setDisabled(true)activate

disabledcommandButton の属性が になるまで数秒かかりますtrue

disabledプロパティが false に戻され、commandButton の属性disabledが更新されます。そのため、commandButton の更新は関数の終了後に行われます。

メソッドがアクティブになったときに commandButton の属性を更新するにはどうすればよいthis.setDisabled(true)ですか?


RequestContext.getCurrentInstance().update("button-id");
その後使用してみましたthis.setDisabledが、うまくいきません。

4

1 に答える 1

1

テストされていませんが、次のような方法で行う必要があります。

<p:commandButton 
 actionListener="#{scannerStatus.activate}" 
 id="button-id"
 onstart="document.getElementById('button-id').disabled = true;"
 oncomplete="document.getElementById('button-id').disabled = false;" />
于 2016-09-13T08:13:09.717 に答える