0

我遇到了Icefaces的问题,它是javascript bridge。在我对服务器端进行更改后,我不知道这个桥接器做了什么更改。

例如:我的页面中有一个ice:panelPopup组件,其可见属性 =“ #{bean.customPopUp} ”。如果我将“ bean.customPopUp ”更改为“ true ”,弹出窗口会正确显示,但我需要知道:客户端发生了什么,换句话说,我需要知道弹出窗口是否显示我需要做一些使用 javascript 的客户端处理

4

1 回答 1

0

我也一直在尝试寻找组件级回调的解决方案。这个问题似乎没有很好的解决方案。我求助于在 Javascript 中启动递归轮询函数,该函数在检测到我的组件更新后处理我的任务。我的支持 bean 启动 poller() 并每 500 毫秒运行一次,直到组件更新发生。

var pollingCount = 0;
var previousValue;

function poller() {
    // Kill poller after 30 seconds
    if (pollingCount >= 60) {
        pollingCount = 0;
        return;
    }

    var currentValue = document.getElementById('myInputElement').value;
    if (previousValue != currentValue) {
        previousValue = currentValue;
        pollingCount = 0;
        myFunction();
    }
    else {
        pollingCount++;
        setTimeout('poller()', 500);
    }
}

我的支持豆:

updateDataModel(); // Causes 'myInputElement' component to update

FacesContext fc = FacesContext.getCurrentInstance();
JavascriptContext.addJavascriptCall(fc, "poller();");

我不太喜欢这个解决方案,但目前似乎没有任何好的答案。

于 2009-12-21T22:25:09.027 回答