SmartGWT 里面做服务端校验的方法

在使用hibernate作为datasource的情况下,有两种方法。

 

第一种是我最开始用的办法,比较普通,也比较土。使用RPC来进行校验,在提交之前,使用RPC的调用。

XxxxRemoteService.Util.getInstance().isFileNameValid( form.getValueAsString( "name"), new AsyncCallback<Boolean>() {
	@Override
	public void onSuccess(Boolean result) {
		if ( result) {
			form.saveData();
			okClick();
		} else Window.alert( "该文件无法创建,模板文件不存在,请先上传该类型的模板文件。");
	}
	@Override
	public void onFailure(Throwable caught) {
		Window.alert( "该文件无法创建,请参考日志文件。");
	}
});

 

第二种方法,则是利用 SmartGWT EE 里面提供的 HibernateDataSource机制,继承自HibernateDataSource,

然后在其中的validateDSRequest方法当中进行校验。首先 ds.xml文件当中要设上

 

serverConstructor="org.simon.xxx.server.docs.XxxxxDataSource"

 

然后代码里面:

@Override
public DSResponse validateDSRequest(DSRequest request) throws Exception {
	DSResponse response = super.validateDSRequest(request);
	if ( !"add".equals( request.getOperationType())) return response;
	if ( response == null) response = new DSResponse();
	ErrorReport errorReport = response.getErrorReport();
	if ( errorReport == null) {
		errorReport = new ErrorReport();
		response.setErrorReport( errorReport);
	}
	File templateFile = new File( SvnUtils.getTemplateFile( 
StringUtils.getFilenameExtension( (String) request.getValues().get( "name"))));
	if ( !templateFile.exists()) {
		errorReport.addError( "name", new ErrorMessage( "该文件类型不存在,请上传该类型的模板"));
		response.setStatus( DSResponse.STATUS_VALIDATION_ERROR);
	} else return null;
	
	return response;
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值