用Command实现校验器

原创 2015年07月08日 20:17:48

最近工作中遇到许多校验的数据,一直用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来灵活的校验。

struts2自成定义校验器的使用

struts2的自定义校验器操作例子
  • AdrainHuang
  • AdrainHuang
  • 2016年06月19日 14:50
  • 796

Struts2方便实用的内置校验器

转自:点我阅读原文 Struts2提供的声明式验证器在xwork-core-**.jar包的  com\opensymphony\xwork2\validator\validators\defau...
  • qq_33665647
  • qq_33665647
  • 2017年02月02日 22:13
  • 817

Spring框架的validator验证器的实现

Spring框架的 validator 组件,是个辅助组件,在进行数据的完整性和有效性非常有用,通过定义一个某个验证器,即可在其它需要的地方,使用即可,非常通用。 那验证器该如何定义,注入到sprin...
  • shenzhenNBA
  • shenzhenNBA
  • 2016年06月25日 21:31
  • 2571

ssm关于校验问题

jar包 springmvc.xml中配置
  • ethunsex
  • ethunsex
  • 2017年05月16日 19:48
  • 335

Struts2 输入校验器大全

技术要点 介绍 Struts2 自带的输入校验器。   演示代码 在 xwork-2.0.4.jar 包中,请读者在 \com\opensymphony\xwork2\validator\...
  • xu_baby
  • xu_baby
  • 2014年11月12日 20:24
  • 461

javascript常用校验器

/************************************************* **常用校验器,请引用此文件,不要复制内容到HTML文件中使用 ** **************...
  • feihuadao
  • feihuadao
  • 2016年03月09日 10:38
  • 334

SpringMVC服务器端校验-有配置文件

Hibernate-validator进行验证 配置beans.xml文件,如下: 默认的注解映射的支持 --> mvc:annotation-driven valida...
  • qq_24963197
  • qq_24963197
  • 2016年06月28日 14:36
  • 1487

SpringMVC-InitBinder验证-对表单数据验证

简介说明Spring MVC使用InitBinder验证:使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用。大部份...
  • changqing5818
  • changqing5818
  • 2016年12月11日 20:09
  • 309

Struts2中提供的内置声明式验证器的使用

Struts2提供的声明式验证器在xwork-core-**.jar包的 com\opensymphony\xwork2\validator\validators\default.xml配置文件中 ...
  • Minhellic
  • Minhellic
  • 2016年07月03日 15:59
  • 1884

AOP自定义校验功能模块

上一篇博客写了用AOP去完成参数校验的功能,但是作为一个比较通用的解决方案,如果要添加新的校验规则,最好是不需要修改原有的代码。前一篇博客在注解里把校验规则给写死了,这是不灵活的。拦截到了请求之后我们...
  • micro_hz
  • micro_hz
  • 2017年04月19日 15:53
  • 307
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Command实现校验器
举报原因:
原因补充:

(最多只允许输入30个字)