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

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

 

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 = Pattern.compile(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@hotmail.com

email:baozhengw@163.com

 

本平台诚征销售代理

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值