这是一个服务端参数验证框架,可以对JavaBean中的属性以及方法中参数列表进行验证

_Nick_ 2015-12-08 04:19:15
这是一个服务端参数验证框架,可以对JavaBean中的属性以及方法中参数列表进行验证

默认支持的验证规则
MaxLengthValidate 验证最大长度
MaxValueValidate 验证最大值
MinLengthValidate 验证最小长度
MinValueValidate 验证最小值
NotNullValidate 验证非空
RangeLengthValidate 验证长度范围
RangeValueValidate 验证值范围
RegexpValidate 验证正则规则

验证JavaBean

@ValidateBean
class JavaBean{

//非空验证
@NotNullValidate
private String property1;

//value的范围验证
@RangeValueValidate(min="1", max="120")
private Integer property2;

//集合的长度验证
@MinLengthValidate(length=1)
//list中的AnotherJavaBean对象会递归验证
private List<AnotherJavaBean> list;

}



@ValidateBean
class AnotherJavaBean{

@NotNullValidate
private String subProperty1;

@RangeValueValidate(min="1", max="120")
private Integer subProperty2;

}




SmartValidate.validate(new JavaBean());


验证方法参数

1 在方法中加入验证规则注解


public void method(
@ValidateArgument(
notNull=@NotNullValidate,
maxLength=@MaxLengthValidate(length=1)
)
/** 验证单个参数 **/
String argument,
/** 验证JavaBean **/
JavaBean javaBean) {

}


2 配置


<aop:config>
<!-- pointcut 配置成需要拦截的路径 -->
<aop:advisor pointcut="execution(*.*(..))" advice-ref="smartValidateInterceptor"/>
</aop:config>
<bean id="smartValidateInterceptor" class="com.smart.validate.interceptor.SmartValidateInterceptor" />


拓展

1 定义自己的验证注解

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomerValidate {
String message () default "";

String name () default "";

}


2 实现自定义验证规则

public class MatchCustomerValidate extends AbstractMatchValidate<CustomerValidate >{
@Override
public void validate(CustomerValidate t,
String fieldName,
Object value)
throws SmartValidateException {

//your code
}


3 生效自定义验证规则

ValidateRulePool.mount(CustomerValidate.class, new MatchCustomerValidate());


Code

https://github.com/lichao4Java/smart-validate
...全文
197 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
_Nick_ 2015-12-08
  • 打赏
  • 举报
回复

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧