我想为我的用户实现有关进度状态的一种信息。我找到了几个组件,如:
Richfaces status或IceFaces onnection Status
所以,我想在我的页面中添加类似的东西,特别是对于ajax请求。实施它的最简单方法是什么?我不想使用其中一个组件,而是编写自己的组件,但我无法想象它需要多少努力: - )
我感谢你的想法...
答案 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);