dorado7ajax,AjaxValidator(SEUG)

本文介绍了如何在不将Java端的数据校验逻辑转化为JS的情况下,利用AjaxValidator调用已有的Java方法进行客户端数据校验。通过在类上添加@Expose注解暴露校验方法,并定义Ajax服务定位表达式,可以实现远程Ajax调用。同时强调了直接在承载业务逻辑的Java类上定义@Expose的安全隐患,建议采用更安全的Ajax服务定义方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当某一个编辑框的数据校验逻辑是Java端的一个已有方法,并且你不想将这个校验逻辑翻译为JS代码在客户端执行的时候,你可以为对应的PropertyDef增加一个AjaxValidator对象。

例如你的Java业务逻辑层已经实现了一个账号的数据校验逻辑:

你可以将这个方法暴露给客户端,便于远程Ajax的调用。

例如:在确保当前类被注册到Spring中的前提下,我们将当前类的声明中添加一个dorado的annotation声明@Expose:

把这个标记添加到Java类的声明中是表示,自动将这个类的所有方法都暴露给Dorado的Ajax的客户端。

注意

基于安全考虑如果直接在一个承载BO逻辑的Java类上定义@Expose是不太严谨的,它会导致一些不该暴露的方法也暴露了,更安全的做法请参考: Ajax服务的定义

如果这个类注册到Spring工厂中的bean的id为validators,则根据dorado中Ajax服务定义的规范,那么这个checkAccountName的Ajax服务定位表达式为:validators#checkAccountName

接下来我们只要将AjaxValidator的service值修改为上面计算出来的Ajax服务定位表达式就可以。

a80beeece03decfcedaeaafae65a6370.png

当你在编辑框中输出数据时,数据校验器会自动呼叫Validators.java中的checkAccountName方法,并将当前编辑框中的输入值作为方法参数传人。

如果方法抛出异常或者返回一个非空的数据时,Ajax数据校验器都会认为是数据校验失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值