最近工作中遇到许多校验的数据,一直用if-else去校验很不灵活,于是用Command方式去实现

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   http://www.springframework.org/schema/aop   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"default-autowire="byName"><bean id="uerVerification" class="com.steven.UserVerification" /><bean id="mobileVerification" class="com.steven.MobileVerification" /><bean id="codeVerification" class="com.steven.CodeVerification" /><bean id="orderVerification" class="com.steven.OrderVerification" /><bean id="orderVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="orderVerification" /></map></constructor-arg></bean><bean id="codeVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="codeVerification" /></map></constructor-arg></bean><bean id="mobileVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="mobileVerification" /></map></constructor-arg></bean><bean id="uerVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="uerVerification" /></map></constructor-arg></bean><!-- 实现类 --><bean id="gdActivityServiceInvoker" class="com.test.ServiceInvoke" ><property name="verifyMap"><map><entry key="checkUer" value-ref="uerVerificationMap" /> <entry key="checkMobile" value-ref="mobileVerificationMap" /><entry key="checkCode" value-ref="codeVerificationMap"/><entry key="checkOrder" value-ref="orderVerificationMap"/></map></property></bean></beans>

注:上述配置文件,可以灵活的使用校验器,也可以灵活的增加或者删除校验器,并且支持执行校验器特定的方法。

public abstract class ActivityServiceInvoker {/*** 校验参数* verifyType 表示特定的校验器*/public abstract ActivityResult checkParamter(String verifyType,ActivityParamter paramter);@SuppressWarnings({ "unchecked", "rawtypes" })public ActivityResult execute(Verification verification, String method, ActivityParamter paramter) throws Exception {Class clazz = verification.getClass();Method clzMethod = clazz.getDeclaredMethod(method,ActivityParamter.class);return (ActivityResult) clzMethod.invoke(verification, paramter);//执行特定的校验方法}}

每一个校验器可以继承ActivityServiceInvoker这个类,然后复写public abstract ActivityResult checkParamter(String verifyType,ActivityParamter paramter);这个方法即可。

public class OrderServiceInvokerImpl  extends ActivityServiceInvoker{private LinkedHashMap<String,HashMap<String, Verification>> verifyMap;//可以灵活的注入校验器private static final Log LOG = LogFactory.getLog(OrderServiceInvokerImpl.class);public ActivityResult checkParamter(String verifyType,ActivityParamter paramter){//在这里进行数据校验return result;}public void setVerifyMap(LinkedHashMap<String, HashMap<String, Verification>> verifyMap) {this.verifyMap = verifyMap;}}

每一个实现类里,可以配置一个verifyMap来灵活的校验。

用Command实现校验器相关推荐

  1. 使用 Struts2 校验器校验用户注册信息的例子

    转自:https://blog.csdn.net/jin2005006/article/details/53999562 基于验证框架的输入校验 一.创建一个struts2项目testValidato ...

  2. zend framework php编码规范,Zend Framework常用校验器详解

    本文实例讲述了Zend Framework常用校验器.分享给大家供大家参考,具体如下: Date日期校验器 代码:<?php require_once 'Zend/Validate/Date.p ...

  3. @SkipValidation跳过Struts2validation校验器

    在方法前加:@SkipValidation注解,该方法可以跳过validation校验器校验器 转载于:https://www.cnblogs.com/ITYOB/p/7475368.html

  4. 自定义的注解校验器的实现

    首先先学习一下注解,注解为我们在代码中添加信息提供了一种形式化的方法,使得我们在稍后的某个时刻可以方便地使用这些数据. 在日常的编码中我们一直都在使用注解,只是没有特别关注过,Java中内置了三种注解 ...

  5. 数据校验器架构模式组

    刘 岳林 (yuelin_liu@msn.com), 软件工程师 2007 年 1 月 15 日 本文阐述软件架构与设计模式,它为架构师和开发人员提供了一组关于数据校验的架构模式(隔离校验器,可组装校 ...

  6. struts2校验框架之Visitor校验器

    Visitor校验器主要用于检测Action里的复合属性,如一个Action里面包含了User类型的属性. 假设User类包含了username和password属性,为了验证Action里User类 ...

  7. python参数检验框架_python-wtforms框架如何自定义校验器的原理和方法总结

    细节请看注释,核心就是__call__函数的用法(def __call__(self,form, field)参数由继承的Form自动提供) from wtforms import Form, Str ...

  8. 字符串校验器 ExcelValidator.java

    简介 字符串校验器.开发excel批量处理数据时开发使用,快速校验读取出的每一个单元格数据是否符合预定格式: api 目标字符串是目标数组中的一个 checkContains(String[] arr ...

  9. Zend Framework学习之常用校验器

    Date日期校验器 代码: <?php require_once 'Zend/Validate/Date.php'; function c_date($date){$validator = ne ...

最新文章

  1. MySQL 数据库大小写的问题
  2. python画圆并填充图形颜色_如何使用python设计语言graphics绘制圆形图形
  3. android如何与服务器交互?
  4. .net控件FreeTextBox使用方法
  5. item不可见 recycleview_Android解决RecyclerView中的item显示不全方案
  6. [公告]博客迁移通知
  7. 项目管理九大知识领域过程逻辑关系图
  8. 【转载】《周一清晨的领导课》读书笔记!!!
  9. kettle配置资源库
  10. 多可文档管理的数据备份
  11. 椭圆检测(Ellipse Detection)算法
  12. 轨迹绕圈算法_基于三次B样条曲线拟合的智能车轨迹跟踪算法
  13. AI帮我画出了小说里的人物,我这么多年的小说好像白看了。。。
  14. ECharts 区域缩放组件使用详解
  15. execjs._exceptions.ProcessExitedWithNonZeroStatus
  16. 第一章 Adobe After Effects AE插件开发 SDK入门-AE内部结构定义(一)-版本
  17. Java函数式编程(基础):第一部分
  18. 青铜到王者,京东数科这个AI机器人组织有多野?
  19. string的erase用法
  20. RT-Thread创始人新年寄语: 开源如水、商业似船

热门文章

  1. Verilog学习----条件语句、循环语句、块语句与生成语句
  2. 工业互联网 — TSN — 技术架构
  3. Kong APIGW — Plugins — Traffic Control
  4. 如何理解写文档这件事情 ?
  5. kickstart+tftp部署redhat系统
  6. DHCP服务器的配置详细说明
  7. App Store 状态列表
  8. Biztalk 在流程中定义将消息保存为文件的文件名
  9. CCNP第四天(2) 配置、校验OSPF特殊区域类型-完全Stub区域
  10. C# Regex(3)