Struts 2 Hibernate校验教程

来源:互联网 发布:linux 关闭wlan0 指令 编辑:程序博客网 时间:2024/06/16 22:49

Struts 2 Hibernate校验例题

Hibernate校验器框架遵循DRY(不自我重复原则)。使用hibernate校验器,你需要在域对象(domain object)使用注释进行指定限制。一旦你指定了限制,那么就可以在不复制的情况下,在应用的所有层中使用它。

 

Hibernate校验器来自基础内建限制,如:@Length(min=, max=),@Max(value=),@Min(value=),@NotNull,@NotEmpty等等。你也可以简单的创建自定义的限制。

 

lib路基中需要的lib和上一篇的一样。

 

域对象(domain object)user,使用了校验限制如下:

 

这里除了JPA注释意外,还有Hibernate校验限制。

 

@NotEmpty 约束检查是否为空。

@Length(min=6, max=10) 约束检查是否在最大值和最小值范围之内。

 

校验信息是由插件自动声称的,我们也可以使用message属性来重写默认的信息。例如下面,为gender和country属性指定自定义信息。

 

在UserAction类中用@Valid指定需要校验的域对象(domain object)。

 

自从我们使用Hibernate插件,就需要继承hibernate-default包。在hibernate-default包中包含三个拦截器(interceptor)栈。

  • basicStackHibernate : Struts2 basicStack + Hibernate session和transaction性能。
  • defaultStackHibernate : Struts 2 defaultStack(没有校验) + Hibernate校验,session和transaction性能。
  • defaultStackHibernateStrutsValidation:Struts 2 defaultStack(有校验) + basicStackHibernate。

struts.xml文件如下:

 

在默认情况下,使用defaultStackHibernate拦截器(interceptor)。在addUser动作(action)中,我们使用默认的拦截器(interceptor)进行校验,在listUser动作(action)中,使用backStackHibernate,因为不需要校验。

 

在register.jsp页面中,用key属性代替name属性给属性赋值。这是为默认校验所生成的。

 

key的值可以在UserAction.properties文件指定,这个文件也得保存和UserAction.java文件同一个目录。

 

在默认情况下,生成用区域标签为前缀的校验信息。

 

当没有输入任何值而直接提交,那么执行画面和下图相似。

 

这里的校验信息是为校验User Name,Password和About而生成的。这是因为在UserAction.properties文件里指定了key值。如果只想校验,不在属性文件里指定key值,那么Gender和Country就是只显示自定义的错误信息而不显示区域标签。

 

源代码:下载

源代码 + lib:下载