我有<p:commandButton disabled="#{scannerStatus.disabled}" actionListener="#{scannerStatus.activate}" id="button-id"/>
在scannerStatus中我有:
private boolean disabled;
//加上geters和setter
public void activate() {
this.setDisabled(true);
boolean status = doAnAction(); // This takes some seconds
if (!status) {
doSomething();
} else {
this.setDisabled(false);
}
}
问题是,当调用disabled
方法的this.setDisabled(true)
行时,commandButton的activate
属性不会改变。
我需要几秒钟将commandButton中的disabled
属性设为true
。
将disabled
属性设置为false,然后更新commandButton中的disabled
属性。因此commandButton中的更新发生在函数结束之后。
当方法中的this.setDisabled(true)
激活时,如何更新commandButton的属性?
我试过用
RequestContext.getCurrentInstance().update("button-id");
在this.setDisabled
之后,但它无效。
答案 0 :(得分:1)
未经测试,但这样的事情应该这样做:
<p:commandButton
actionListener="#{scannerStatus.activate}"
id="button-id"
onstart="document.getElementById('button-id').disabled = true;"
oncomplete="document.getElementById('button-id').disabled = false;" />