Dorado7之AjaxAction

       使用Ajax技术需要写后台业务类,并将业务类添加到spring容器中(Dorado已经集成了spring),在需要加入spring容器的类上加上组件注解@Component,同时在app-context.xml中配置注解扫描,表示spring容器将在启动是扫描该包下的所有注解,同时将扫描到的对象加入IOC容器中。

补充:@Expose标记是Dorado7专门提供的标注,用于定义可暴露服务,根据这个规则Dorado7会将这个方法自动注册在 ExposedServiceManager中,其中服务名为:systemInfoService,服务表达式 为:systemInfoService#getSystemInfo。服务名就是SystemInfoService.java在BeanFactory中注册的bean的id,annotation机制会自动将Ajax的S自动转换为小写字母。

至此,后台服务就创建完成。

前台如何调用后台写好的服务方法呢?

新建Dorado表现层视图文件,在viewConfig中的view目录下新建AjaxAction控件,设置控件id,其他控件通过该id调用该控件,executingMessage设置正在请求中的提示,successMessage设置请求成功的提示,service属性中设置的值,称之为服务定位表达式,在Dorado7中服务定位表达式是用来描述服务的查找方式,即Dorado7通过服务定位表达式来查找到具体服务,以便于对服务进行调用。systemInfoService为注册到spring容器beanFactory中的beanId,getSystemInfo为方法名。

AjaxAction执行成功后,应该获取后台方法的返回值并对前台控件赋值,因此需要对ajaxactionGetSysInfo绑定onSuccess事件。

方式一、

self表示ajaxactionGetSysInfo这个控件自身,returnValue为AjaxAction控件的属性字段,表示Ajax调用结束后Java层返回的结果。由于 Ajax方法返回的是一个Map对象,在JS中会自动转为JSON对象,这样就可以直接通过 info.product,info.veneor,info.version访问map中的内容。

#labelProduct表示当前页面的labelProduct控件。
view.set("#labelProduct.text","产品:"+info.product);这句代码则表示设置当前页面控件Id为labelProduct的text属性为后台方法的相应返回值。

方式二、我们也可以将labelProduct,labelVendor,labelVersion,labelTime这四个控件Id作为参数传递到onSuccess方法中,然后在事件中通过控件Id直接引用控件对象。优化后的代码如下图:

 

通过一个按钮控件调用该Ajax控件,只需要将按钮控件的行为action设置为AjaxAction控件Id就OK。

运行结果:

点击按钮前点击按钮后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值