[Dataset] ????

2014-06-16 15:45:43by ???

校验

客户端校验

概述

页面上数据提交前通过javascript脚本作简单的校验。

非空校验

对数据进行非空校验,代码实现比较简单,如下代码所示,将field的属性required设为true即可。

<a:dataSets>
	<a:dataSet id="aaa_ds" model="xxx">
		<a:fields>
			<a:field name="name" required="true"/>
		</a:fields>
	</a:dataSet>
</a:dataSets>

<a:form title="校验名称" >
	<a:textField name="name" bindTarget="aaa_ds" prompt="名称"  />
</a:form>

如需自定义非空校验的提示信息,可通过field的属性requiredMessage来设定。

自定义函数校验

数据需要做一些简单逻辑校验时,可以自定义函数进行校验,如下代码,创建一个检验函数,然后将field的属性validator

function validator1(record,name,value){
	return true;
}

<a:dataSets>
	<a:dataSet id="aaa_ds" model="xxx">
		<a:fields>
			<a:field name="name" validator="validator1"/>
		</a:fields>
	</a:dataSet>
</a:dataSets>

<a:form title="校验名称" >
	<a:textField name="name" bindTarget="aaa_ds" prompt="名称"  />
</a:form>

validator函数接受三个参数。如下表

表 1. validator函数参数

参数说明
record校验的当前记录
name当前记录校验的字段名
value当前记录校验的字段值

validator函数还需要指定返回值。返回true表示校验通过;返回false或者字符串表示校验不通过,字符串用于提示警告信息。

通过AJAX执行server端校验

概述

有些时候,页面上的数据校验可能会涉及到数据库中的多张表,逻辑比较复杂,无法通过javascript来校验,这个时候可以考虑通过AJAX执行server端校验

定义

通过AJAX执行server端校验具体是指:将界面上的数据通过Aurora.request方法发送至服务端,通过指定的url路径去请求某一个bm中定义的方法(一般来说,我们比较多的采用bm的execute方法来进行校验。)去调用数据库中的包来进行校验。

如果校验不成功则通过包的错误处理,向页面上抛出具体的出错信息。

如果校验成功则执行Aurora.request方法中定义的成功后的回调函数。

Aurora的request方法接受一个object类型的参数。该参数有几个特定的属性。如下表

表 2. Aurora.request方法参数的特定属性

属性说明
url指定该请求需要提交到的bm路径及调用该bm中的哪个方法
para需要提交的数据对象,必须满足json数据的格式
success提交成功后需要执行的函数function(response){},response参数获取返回的提交结果,可以在{}中写入需要执行的操作,或者对返回的提交结果继续进行操作
scope作用域,一般写this,表示当前作用域就行了

下面的代码,通过Aurora.request请求名为xxx的bm的execute方法对name进行校验,检验成功后弹出提示框,提示校验通过

function check_name() 
{
	var name=$('aaa_ds').getCurrentRecord().get('name');
	Aurora.request(
	{
		url: '${/request/@context_path}/autocrud/xxx/execute',
		para: 
		{
			'name':name
		},
		success: function(response) 
		{
			Aurora.showMessage('提示','校验通过');
		},
		scope: this
	}
	);
}

<a:dataSets>
	<a:dataSet id="aaa_ds" model="xxx">
		<a:fields>
			<a:field name="name" required="true"/>
		</a:fields>
	</a:dataSet>
</a:dataSets>

<a:form title="校验名称" >
	<a:textField name="name" bindTarget="aaa_ds" prompt="名称"  />
	<a:button click="check_name" text="校验名称"  />
</a:form>
Demo
  1. ??
Attachments
  1. validation.rar

Comments

1 Responses to the article
  1. [email protected] 留言于:2018年10月29日 20:51
    感谢,不错,DEMO小问题#滑稽。
发表评论