一个ajax轮子
hocate ajax框架
一个新的轮子,现在网络上充斥这一大堆的轮子.我也做了一个.一半是研究,一半是想做给自己用
目前实现的功能
1 JSON转换成java对象(按一定的规则提交)
什么意思呢,就是你能够将你在浏览其中提交的JSON直接转换成一个java对象供应用程序调用
2 java对象转换成JSON
可以将servlet中的java对象转换成一个JSON对象给浏览器中的js调用,而如果调用从servlet中获得的JSON的一些方法.其实就是java对象的方法在客户端的映射那么就相当于你在servlet中调用了这个java对象的方法.
举个简单的例子:
testObject 有属性:String prot1;
有方法:String showProt1()
{
System.out.println(prot1);
return prot1;
}
void setProt1(String prot1)
{
this.prot1 = prot1;
}
你可以通过hocate框架获得testObject对象的JSON映射
var JSTO = $ha.getObject("testObject");
那么你可以通过JSTO.prot1获取java对象中prot1中的值
也可以通过var prot1 = JSTO.showProt1();来获得,但在你的servlet中会有prot1的值的输出,实际上
他是在你的servlet中调用了showProt1方法.在脚本中编写对java对象的操作的代码和在java程序里编写对
java对象操作的代码相同
3 实际应用中不需要想DWR或者其他框架那样应用一个java对象的js脚本,而是你在servlet中配置好相应的需要提供
的java对象,就可以通过$ha.getObject来完成对象的获取.并可以直接使用,总的来说编码的过程中就不需要引用
特定脚本.
4 对属性的绑定.
在使用的过程中你可以通过为任意Form标签或者Form内的可输入标签增加bind属性将这些标签中的值绑定到相应的JSON对象上.
例如你有一个登陆form,需要提供username,password
那么你可以使用为form标签增加相应的bind属性绑定的一个特定的JSON对象上
或者为form中的<input>标签增加bind属性将其绑定到JSON对象的一个特定的属性上
如果你的这个JSON对象是通过$ha.getObject获得的那么你就可以在页面中通过bind属性的自动绑定够能修改这个
JSON中的数据,而将这个JSON提交到servlet中的时候就会相应的修改servlet中的java对象的值.你所要做的就是
$ha.getObject获取对象,然后bind值,然后将这个JSON提交出去.
6 自动验证体系
对EMail.数字.等等的自动验证
<input name="text2" type="text" id="validate" datatype="Email" autovalidate="true" />
通过增加datatype属性和autovalidate属性
那么在提供$hv.error和$hv.correct的callback函数可以自动的验证客户的输入是否合法
这两个回调函数都回传入一个参数,那个就是被验证对象的ID属性
//验证函数
$hv.error = function(v1)
{
$("#validateResult").html(v1+"参数不正确");
}
$hv.correct = function(v1)
{
$("#validateResult").html(v1+"参数正确!!!");
}
而你也可以通过$hv.validated('validate')的方法来手工验证数据
7 JSON对象的调用验证
这里所说的JSON对象是指你用servlet中获得的java对象的一个JSON映射
例子请参照(2)中的那个例子.
由于java对参数的要求是很严格的.所以参数类型必须符合定义中的规范
而通过JSON提交上去的参数如何验证呢?
hocate ajax框架提供了客户端的验证能力
1 验证参数类型是否正确
2 验证参数个数是否正确
例如(2)中的例子
调用JSTO.setProt1(...)方法
如果你提供里一个JSTO.setProt1()无参数调用,那么在验证参数个数的时候就会在浏览器中报错
如果你提供JSTO.setProt1(Object)调用就会验证你的这个Object是否是String类型如果不是会报错
8 为参数提供对象支持
例如有个对象test的一个方法setObject(userDefined kkk) 其中userDefined 是一个我们自己定义个类
那么如何提交这个对象呢
可以通过ud = $hv.getObject('userDefined');来获得一个test对象在浏览器中的空映射,接着我们用js为其填
入相应的值.
最后在调用方法的时候test.setObject(ud);就可以将这个ud对象提交到servlet中servlet会自动把它转换成一
个java的userDefined对象供编程使用
不知道这个轮子大家满意不.我只是针对自己的使用习惯做了相应的功能开发.
大家提提意见
演示地址:http://www.hocate.org/ajaxdemo