欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

seam 中应用自定义hibernate validator

程序员文章站 2023-12-21 12:57:58
...
关于自定义hibernate validation的方法网上一大把,就不多写了,给一个地址吧:http://xiaoyou8519.blog.163.com/blog/static/14015728620110614059638/

下面是我用到的一个自定义的验证:主要做的是验证一下卡号是不是唯一的
代码:
@ValidatorClass(SameValidator.class)
@Target( {java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.FIELD } )
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Documented
public @interface Same {
	String message() default "已经存在,请换其它的试试!";
}


实现:
public class SameValidator implements Validator<Same>, PropertyConstraint,
		Serializable {

	private static final long serialVersionUID = -7858011546519554903L;

	@SuppressWarnings("unchecked")
	public void apply(Property property) {
		if (!(property.getPersistentClass() instanceof SingleTableSubclass)
				&& !(property.getValue() instanceof Collection)) {
			// single table should not be forced to null
			if (!property.isComposite()) {
				Iterator<Column> iter = (Iterator<Column>) property
						.getColumnIterator();
				while (iter.hasNext()) {
					iter.next().setNullable(false);
				}
			}
		}

	}

	public void initialize(Same arg0) {
		
	}

	@SuppressWarnings("unchecked")
	public boolean isValid(Object obj) {
		if (obj == null) {
			return false;
		}
		if (obj instanceof String) {
			
			//添加时的验证逻辑
            ......
            //编辑时的验证逻辑
            ......
			
		}
		return false;
	}

}


Hibernate validation 是基于Hibernate事件模型的校验;通过测试发现,在对实体进行添加,编辑,删除的时候都进行了验证(文档中说删除不验证);具体的参考下面的连接:
[url=http://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html/validator-checkconstraints.html]
http://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html/validator-checkconstraints.html[/url]

上一篇:

下一篇: