`

seam 中应用自定义hibernate validator

    博客分类:
  • seam
阅读更多
关于自定义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]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics