ext java数据接口

Extjs和java传输协议
1.文件包 js,html,vm
Js文件:定义js类文件
Html文件:用来书写一些html代码片段和js代码片段
Js文件中的js和html文件中的js代码片段区别在于:如果作为其他模块的调用方法或者功能则定义在js文件中,否则定义在html中作为js代码片段中。
Vm文件:用来定义ext和java传输的数据信息(关于此文件的格式下面定义了一套规则),也就是说velocity模板功能在ext项目中只用来定义传输信息和格式,而非组织html内容。
2.数据传输方式
关于信息的传输涉及到java中的action类,vm和extjs。
总的来说后台的代码组织形式和普通的项目是一样的,只不过vm文件的使用有别于普通项目,它用来传输java和ext之间的数据信息。
例如:在java的action类中方法定义如下(登录的例子):
public ActionForward loginExtJS(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws BaseException {
………….//内容
If(失败)
return mapping.findForward("loginFail");
else
return mapping.findForward("loginSuc");
}
}
Strut_config.xml配置为:
<action path="/loginExtJS" type="com.css.main.action.LoginAction"
scope="request" parameter="loginExtJS" name="userForm" validate="false">
<forward name="loginFail" path="/vm/loginFail.vm" />
<forward name="loginSuc" path="/vm/loginSuc.vm" />
</action>
以上和普通项目相同。
Vm内容如下:
loginFail.vm文件:
{
"code":"0000",
"msg":"登录失败!",
"success":true
}
loginSuc.vm文件:
{
"code":"0001",
"msg":"登录成功!",
"success":true ,
"data" : "$permitString"
}
Vm文件只是用来传输信息的内容和格式,作为信息流传输。
Extjs接收信息。例如接收loginSuc.vm的信息:
loginForm.form.doAction('submit', {
url : '/loginExtJS.do',//转到了loginSuc.vm,解析里面的信息
method : 'post',
success : function(form, action) {
if (action.result.code == '0001') {
permitString = action.result.data;
} else {Ext.example.msg('提示:',action.result.msg);
}
},
failure : function(f,a) {
//后台报错
if(a.failureType===Ext.form.Action.CONNECT_FAILURE){
Ext.Msg.alert('错误', '服务器出现错误!');
}//服务器没有启动
if(a.failureType === Ext.form.Action.SERVER_INVALID){
Ext.Msg.alert('错误', '服务器无效,稍等,请重试!'); }
}
});
}
3.数据传输协议
以下定义数据的传输格式(即传输的vm文件中数据格式)
3.1客户端请求方式
客户端请求方式和普通b/s一样
3.2服务端响应
1, code:定义四位的操作代码;
2, msg:定义对操作代码的解释;
3, data定义服务器端返回的信息数据;
4, extdata表示扩展数据信息;
5, success:true(extjs框架默认某些响应必须含有此信息)

服务端响应:
服务器端每次响应,对应的值视业务情况而定。结构如下:
{
code: "",
msg: "",
data: {} ,
extdata: {} ,
success: true
}

对三类请求的响应,格式如下:
1, 响应是否成功:
{
"code":定义的代码,
"msg":对代码的解释,
"success":true,
"data":[]/{},//返回的信息
“extdata”: []/{}//对data的补充
}
例如:响应用户登录成功信息
{
"code":"0001", //成功代码
"msg":"登录成功!",//成功的提示信息
"success":true
}
2, 返回的列表信息:
{
"data":[ //列表信息
列表内容对象
],
"extdata":215 //对data的辅助信息
}
例如:返回的id和名称列表
{
"data":[
{"id":"111111I9","name":"H001"},
{"id":"111111I8"," name":"H001"},
{"id":"111111I7"," name":"H001"},
{"id":"111111H5"," name":"H001"}
],
" extdata":215 //对data的补充,这里表示列表中数据条数
}

3, 响应查看信息:
{
"data":[{"field1":$!vt.toJSON($field1value),"field2":$!vt.toJSON ($field2value)}],
"success":true
}
例如:通过id查看一条数据,load到Form里进行显示
{
"data":[{" field1":"name"," field2":"00006"}],
//filed1和filed2为ext中Filed属性name
"success":true
}

说明:
code代码规定(根据项目而定):
1, 返回成功代码:1***
2, 返回失败代码:2***
3, 验证信息代码:3***
4, 权限信息代码:4***
5, 异常代码:5***
6, 其他

4.关于异常
有关异常的处理和捕获。
4.1程序异常
在dao中不再捕捉DaoException,bo抛出异常,用工具方法SysGlobals.returnExceptionMsg在action中统一处理异常。
4.2非程序异常
非程序异常指的是服务器失效等非程序因素的异常,应该由ext去处理
5.关于form验证
验证分客户端验证即ext验证,和服务端验证即validator验证。
validator验证和以往项目配置相同,文件struts_config.xml配置属性input返回json结构的vm验证错误信息即可,例如:
{
"code":"3007",
"msg":$!vt.toJSON(#errorMarkup()),
"success":true
}
在ext里解析code,显示msg即可。

注意事项: 1,后台传输给前台的信息要用$!vt.toJSON对信息进行过滤
toJSON参数为字符型,在参数为空的情况下放回””
2,vm页面(即json数据信息)目录结构为:json/模块名称/类名/请求名.vm,目录名称都为小写,.vm文件名称可按请求名称
3, 更新css_util.jar包,在toolbox.xml里加上:
<tool>
<key>vt</key>
<scope>application</scope>
<class>com.css.util.VelocityTools</class>
</tool>
4,在json传输结构中,key可以没有引号,但是其值必须加引号
5,提示的汉字信息定义在在属性文件中,严禁在js中书写提示信息,code写在常量类中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值