JSF状态栏/连接状态信息

时间:2010-08-24 13:05:39

标签: ajax jsf jsf-2

我想为我的用户实现有关进度状态的一种信息。我找到了几个组件,如:

Richfaces statusIceFaces onnection Status

所以,我想在我的页面中添加类似的东西,特别是对于ajax请求。实施它的最简单方法是什么?我不想使用其中一个组件,而是编写自己的组件,但我无法想象它需要多少努力: - )

我感谢你的想法...

1 个答案:

答案 0 :(得分:4)

标准JSF实现不为此提供即用型组件。然而,JSF 2.0 specification概述了第13.3.5.2章中的以下内容:

  

13.3.5.2监视所有Ajax请求的事件

     

JavaScript API提供了jsf.ajax.addOnEvent函数,可用于注册JavaScript函数   当任何Ajax请求/响应事件发生时将通知。请参见第14.4节“注册回叫”   功能“了解更多详情。 jsf.ajax.addOnEvent函数接受一个JavaScript函数参数   在任何Ajax请求/响应事件周期期间发生事件时通知。实施必须   确保必须根据中列出的事件调用已注册的JavaScript函数   表14-3“事件”。

您可以找到here一个Mojarra开发人员的博客,其中包含基本示例。以下是相关摘录:

<h3> Status:</h3>
<textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
     

一个简单的textarea,甚至没有挂钩   进入后端服务器数据模型。

     

然后在我们的javascript中(对于演示,   在一个单独加载的文件中,尽管如此   我们可以轻松地在页面中   有:

var statusUpdate = function statusUpdate(data) {
    var statusArea = document.getElementById("statusArea");
    var text = statusArea.value;
    text = text + "Name: "+data.source.id;
    if (data.type === "event") {
        text = text +" Event: "+data.name+"\n";
    } else {  // otherwise, it's an error
        text = text + " Error: "+data.name+"\n";
    }
    statusArea.value = text;
};

// Setup the statusUpdate function to hear all events on the page
jsf.ajax.addOnEvent(statusUpdate);
jsf.ajax.addOnError(statusUpdate);