龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

基于AJAX和JSF打造丰富的互联网组件之Mabon篇(1)(3)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
十四、Mabon Servlet配置 如果你计划把Mabon应用于你的支持AJAX技术的组件中,那么你应该知道使用你的JSF组件库的应用程序开发者还要再加上一步。应用程序
十四、Mabon Servlet配置

如果你计划把Mabon应用于你的支持AJAX技术的组件中,那么你应该知道使用你的JSF组件库的应用程序开发者还要再加上一步。应用程序开发者需要把显示在下面列表1中的入口添加到Web应用程序配置文件web.xml中。

列表1:Mabon Servlet配置


Mabon Servlet

net.java.dev.mabon.webapp.FacesLifecycleServlet


javax.faces.LIFECYCLE_ID
net.java.dev.mabon


...

Mabon Servlet
/mabon/*

列表2:mabon.js库

dojo.provide("net.java.dev.mabon");
/**
* @param kvparams (map)
* {
* url:目标URL
* args:参数数组
* callback:结果callback,签名为(result)
* }
*/
net.java.dev.mabon.send = function (
kvparams)
{
var params = new Array();
for (var i=0; i < kvparams.args.length; i++)
{
var arg = kvparams.args[i];
if (typeof(arg) == "string")
params.push("'" + arg + "'");
else
params.push(arg);
}
var content = {args:'[' + params.join(',') + ']'};
dojo.io.bind(
{
url: kvparams.url ,
method: 'get',
content: content,
mimetype: "text/javascript",
load: function(type, data, evt) { kvparams.callback(eval(data)); },
error: function(type, data, evt) { alert
('Oops! The server returned an error, please try again.'); }
});
}

servlet类

net.java.dev.mabon.webapp.Faces-LifecycleServlet和初始化参数(例如,net.java.dev.mabon)是Mabon合同的一部分。应用程序开发者可以选择把该映射设置成默认定义一样的URL模式(例如/mabon/*)或重载缺省的URL映射,以防它与Web应用程序使用的资源发生冲突。Mabon自动地消费这个URL映射改变而不用要求任何代码修改。

十五、Mabon JavaScript API

Mabon工程提供了一种方便的JavaScript库―你可以使用它来把你的请求发送到服务器端。Mabon send()函数利用Dojo toolkit的bind()函数以与服务器异步地通讯。有关于Dojo开发工具包的更多信息,请访问Dojo网站(http://dojotoolkit.org/)。

列表2展示了Mabon JavaScript库的源码。

Mabon send()函数只使用一个参数:一个Map。为了从你的AJAX实现中调用mabon.send()函数,你必须使用JavaScript Map语法来构造Map,详见下面的代码:

mabon.send(
{ url: targetURL,
args: [item1, item2],
callback: callback_function }
);

targetURL是资源URL―它被写向客户端(例如
/context-root/mabon-servlet-mapping/managedBean.methodName)。targetURL将被FacesLifecycleServlet所拦截并且将被Mabon “Apply Request Values”阶段所译解。

十六、Mabon协议

现在,既然你已经知道如何配置Mabon,那么我们开始分析你如何引用需要的托管bean来取数据。类似Mabon协议的语法很容易理解。该语法以mabon:/开始,后面跟着托管bean名字,最后是方法名,参考如下:
ViewHandler.getResourceURL(context, "mabon:/.");
这里的语法中使用了一个前缀来指示,这是一个Mabon托管的请求,托管bean的名字和需要的方法。这个由Mabon合同所定义的语法(mabon:/)用于返回一个引用该托管bean的目标URL。

十七、小结

本文讨论了怎样使用AJAX来取数据并且利用JSF管理的bean工具作为一种数据源,还讨论了不同的XMLHttpRequest响应类型―responseText和responseXML―你可以使用它们来把结果返回到服务器端。我们还向你展示了如何有效地使用eval()函数来分析JSON语法响应。

此外,在本文中,我们还讨论了一种新的开源工程Mabon―它扩展JSF来提供一个定制的生命周期―它远程地调用一个托管的bean方法,然后使用JSON请求把结果传送到客户端。

在本系列的下一篇文章中,我们将分析如何综合前面三篇中的知识来创建一个利用AJAX,Mabon和Weblets技术的组件

(责任编辑:铭铭 mingming_ky@126.com TEL:(010)68476606)
精彩图集

赞助商链接