1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > openjweb快速开发平台字段校验器与正则表达式

openjweb快速开发平台字段校验器与正则表达式

时间:2020-10-15 16:56:05

相关推荐

openjweb快速开发平台字段校验器与正则表达式

openjweb平台除了原来的非空,唯一校验外,增加了邮件格式校验器,手机格式校验器,居民身份证校验器,除此之外,增加了正则表达式校验器,正则表达式校验器的增加,实现了为任一表字段配置正则表达式校验,这样开发人员不需要在java代码中编写校验代码,只需要在表字段属性中设置正则表达式,下面是openjweb平台从表字段设置中读正则表达式的代码,读到正则表达式后,使用pile进行解析:

package org.openjweb.core.validator;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import org.apache.log4j.Logger;

import org.openjweb.core.entity.AbstractEntity;

import org.openjweb.core.service.IDBSupportService;

import org.openjweb.core.service.ServiceLocator;

/**

* 自定义正则表达式校验器

* @author王保政

*

*/

public class PatternValidator implements IValidator

{

private static final Logger logger = Logger.getLogger(PatternValidator.class);

public String validate(AbstractEntity entity, String fieldName, String langId, boolean isResourceTag, String dbService) throws Exception

{

// TODO Auto-generated method stub

//从数据库表中取出对应的表和字段定义,如果定义了正则表达式字段非空,则使用正则表达式校验

String clsName = entity.getClass().getName();

String sPattern ="";

String sReturn = "";

String value = "";

IDBSupportService service = (IDBSupportService)ServiceLocator.getBean(dbService);

logger.info("自定义正则表达式sql:");

logger.info("select pattern_value from comm_column_def where table_serial_no in (select serial_no from comm_table_def where cls_name='"+clsName+"' and cls_field_name='"+fieldName+"'");

Object obj = service.getJdbcTemplate().queryForObject("select pattern_value from comm_column_def where table_serial_no in (select serial_no from comm_table_def where cls_name='"+clsName+"' and cls_field_name='"+fieldName+"')", String.class);

if(obj!=null)

{

sPattern = obj.toString().trim();

logger.info("查出的正则表达式:"+sPattern);

Pattern pattern = pile(sPattern);

try

{

value = entity.getFieldValueByName(fieldName).toString();//唯一校验一般为字符串类型

}

catch(Exception ex)

{

//

}

if(value!=null && value.trim().length()>0)

{

Matcher matcher = pattern.matcher(value);

if (matcher.matches())

{

sReturn = "";

}

else

{

sReturn ="字段["+fieldName+"]不符合正则表达式"+sPattern+",请更改!";

}

}

}

return sReturn ;

}

}

另外,也可以实现读取Groovy动态语言脚本进行字段校验,不过由于正则表达式过于强大,似乎不必要再开发Groovy的校验规则.在平台中通过绑定正则表达式及其他校验器,这样项目开发中在修改字段校验时,不需要再更改jsp或java代码.附字段校验器选择页面:

在项目开发中,我们需要收集很多校验器,包括中文姓名校验,邮编,电话号码,等等,其实我们可以设计一个正则表达式的表,来存储各种正则表达式供字段校验使用.

作者QQ:29803446

Msn:baozhengw999@

email:baozhengw@

本平台诚征销售代理

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。