关于自定义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]
分享到:
相关推荐
该文档旨在帮助开发者理解并有效地使用Hibernate Validator进行数据验证,避免在不同应用程序层中重复实现相同的验证逻辑,从而提高代码的整洁性和效率。 文档内容分为多个章节,涵盖从入门到高级特性的全面介绍: ...
Seam、Spring、Hibernate和RichFaces是Java Web开发中的四大框架,它们的集成可以构建功能强大的企业级应用程序。本文将详细解析这四个组件的核心概念、它们如何协同工作以及配置过程。 **Seam框架** Seam是一款...
15. 参数消息插值器(Parameter message interpolator):这是Hibernate Validator中用于自定义错误消息格式的组件,允许开发人员定义复杂的错误消息策略。 16. 资源包定位器(Resource bundle locator):...
7. **测试支持**:Seam的测试工具和API使得对整合后的JSF和Hibernate应用进行单元测试和集成测试变得更为便捷。 通过这些特性,Seam成功地将复杂的业务逻辑、持久化和用户界面融合在一起,为开发者提供了高效、灵活...
这通常涉及到实现 `MessageInterpolator` 接口,并通过 `Validation.byProvider(HibernateValidator.class).configure().messageInterpolator(...)` 来配置。 #### 五、分组约束 ##### 5.1 请求分组 为了更好地...
Seam和Hibernate是两个在Java开发中非常重要的框架。Seam是一个全面的、集成的Java EE框架,主要用于简化企业级应用的开发,而Hibernate则是一个强大的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库...
- **SEAM**:SEAM 是一个基于 Java EE 的企业级应用框架,它简化了复杂的应用程序开发过程,并且提供了丰富的功能来支持业务逻辑的实现。 - **版本信息**:本文档介绍了 SEAM 2.0 GA 版本的功能特性及其使用方法。 ...
ANTLR中文文档预览版.pdf提供了ANTLR的基本概念和使用方法,对于需要处理自定义语法的Seam应用非常有用。 总的来说,这个文档集合为深入学习和实践Seam及相关技术提供了全面的参考资料。通过研究这些文档,开发者...
总的来说,这个练习项目提供了一个基础的示例,帮助初学者理解如何将JSF、Seam和Hibernate这三个强大的技术结合起来,构建一个简单的数据管理应用。通过实践,学习者可以深入理解这些技术的工作原理以及它们在实际...
这三份手册的合集为Java开发者提供了全面的参考资料,覆盖了应用开发的各个层面:从Spring的依赖管理和控制反转,到Hibernate的对象关系映射和数据验证,再到Seam的全栈解决方案。理解并熟练掌握这些技术,将有助于...
1.3. Seam 中的可点击列表:消息示例............................................................................................................................. 27 1.3.1. 理解代码.........................
在这个集成环境中,Maven负责整个项目的构建和依赖管理,Jetty作为运行时服务器,提供快速的开发和测试环境,Seam作为集成框架,简化了Java EE应用的开发,而Hibernate则作为持久层框架,处理数据的存取操作。...
**JBoss Seam 学习资源概述** ...通过阅读这些材料,开发者可以全面了解和掌握JBoss Seam框架,提升其在企业级Java应用开发中的技能。不论是初学者还是经验丰富的开发者,都能从中获益,进一步提升自己的技术水平。
JBoss Seam 是一款基于 Java EE 的应用开发框架,它通过提供一套丰富的组件模型和灵活的应用结构,极大地简化了企业级应用的开发过程。Seam 结合了 JavaServer Faces (JSF)、Java Persistence API (JPA)、Aspect-...
在这个“seam需要的jar包”压缩包中,包含了运行和开发Seam应用程序所需的各种库文件。 首先,Seam框架的核心依赖于JSF,这是Java EE中的一个用户界面组件框架,用于构建交互式Web应用。JSF提供了模型-视图-控制器...
同时,Seam还支持Hibernate,使得对ORM(Object-Relational Mapping)的使用更加灵活。 6. **安全性**:Seam提供了内置的安全机制,如身份验证和授权,使得开发人员能够快速为应用添加安全特性。 7. **国际化与...
在Seam中启动Hibernate,通常需要在seam.properties或相关的配置文件中设置Hibernate连接参数,以及配置Hibernate SessionFactory。 #### 1.4.2. Bootstrap JPA in Seam 配置JPA时,需在persistence.xml文件中定义...
Seam和Hibernate是一个基于JPA的持久化框架,能够帮助开发者快速构建企业级应用程序。Seam和Hibernate提供了一个统一的编程模型,能够将JSF、EJB、JPA等技术整合在一起,提供了一个强大且灵活的开发环境。 Seam和...
1. **组件(Components)**: Seam的核心是组件模型,它允许开发者定义和管理应用中的对象。组件可以是简单的Java类,也可以是EJB或JSF Managed Beans。Seam自动管理组件的生命周期,包括创建、初始化、销毁等过程。 ...