文档章节

j2ee 简单网站搭建:(六)使用 hibernate validation 实现 domain 层实体类验证

b
 binux
发布于 2017/08/25 11:16
字数 667
阅读 53
收藏 0

《j2ee 简单网站搭建:(一) windows 操作系统下使用 eclipse 建立 maven web 项目》
《j2ee 简单网站搭建:(二)添加和配置 spring + spring-mvc 的 mvc 开发环境》
《j2ee 简单网站搭建:(三)在搭建好的 spring maven web 项目中加入 mybatis 访问数据库》
《j2ee 简单网站搭建:(四)将 freemaker 模板引擎作为 spring-mvc 展现层》
《j2ee 简单网站搭建:(五)使用 jcaptcha 生成验证码图片》
《j2ee 简单网站搭建:(六)使用 hibernate validation 实现 domain 层实体类验证》
《j2ee 简单网站搭建:(七)使用 shiro 结合 jcaptcha 实现用户验证登录》
《j2ee 简单网站搭建:(八)使用 jquery-validate 实现页面验证入门》
《j2ee 简单网站搭建:(九)jquery datatables + jquery ui dialog 插件使用入门》
《j2ee 简单网站搭建:(十)jquery ztree 插件使用入门》
《j2ee 简单网站搭建:(十一)ckeditor 控件使用入门》

本文利用 hibernate validation 对 domain 层的实体类根据数据库的字段要求和限制进行验证,该验证库和 hibernate 结合时能够自动实现对实体类中各种字段的验证,但本文是通过单独调用实现,因此需要在需要进行验证的代码处手工代用实现。

一 在 pom.xml 中加入 hibernate validation 包

<properties>

  <hibernate-validator.version>5.4.1.Final</hibernate-validator.version>
  
</properties>

<dependencies>
    
  <!-- hibernate validator 实体类验证框架 start -->
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>${hibernate-validator.version}</version>
  </dependency>
  <dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>${javax-validation.version}</version>
  </dependency>
  <!-- hibernate validator 实体类验证框架 end -->
  
</dependencies>

二 在 com.binux.webdemo.util 包下新建 ValidationUtil.java 文件,提供 domain 层实体类验证的唯一方法。

package com.binux.webdemo.util;


import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Iterator;
import java.util.Set;

public class ValidationUtil {

    //
    private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
    /**
     * 验证翻页基本参数是否正确
     * @param start 数据起始索引
     * @param length 数据长度
     * @return
     */
    public static boolean pagingParamValidate(Integer start, Integer length) {
        if (start < 0 || length <1) return false;
        return true;
    }

    /**
     * bean属性验证
     * @param t
     * @param <T>
     * @return
     */
    public static <T> String beanValidate(T t){
        StringBuffer buffer = new StringBuffer(64);//用于存储验证后的错误信息
        Set<ConstraintViolation<T>> constraintViolations = validator.validate(t);//验证某个对象,,其实也可以只验证其中的某一个属性的
        Iterator<ConstraintViolation<T>> item = constraintViolations.iterator();
        while (item.hasNext())
            buffer.append(item.next().getMessage());
        return buffer.toString();
    }
}

三 在 com.binux.webdemo.domain 下新建需要验证的 TestDomain.java 类,包含连个需要进行验证的属性字段。

package com.binux.webdemo.domain;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;

import java.io.Serializable;

@SuppressWarnings("serial")
public class TestDomain implements Serializable {
    
    @NotBlank(message="不能为空")
    @Length(min=1, max=30, message="长度不能大于30个字符")
    private String name;
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}

四 在需要调用的代码中添加以下内容即可完成对实体类的验证。

String ValidationResult = ValidationUtil.beanValidate(domain);

 

© 著作权归作者所有

b
粉丝 2
博文 34
码字总数 58499
作品 0
兰州
程序员
私信 提问
Spring Data JPA 1.9.0 发布

Spring Data JPA 1.9.0 发布,此版本更新内容如下: * DATAJPA-787 - Release 1.9 GA (Gosling). * DATAJPA-785 - Make sure the build works with Hibernate 5 GA. * DATAJPA-779 - Update ......

淡漠悠然
2015/09/04
1K
0
基于Hibernate的JPA2.0快速构建

前言 尽管现在开源的框架已经非常优秀,但是缺乏统一的标准有违软件开源的初衷,因此Sun公司的JCP组织发布了Java EE的JPA标准,并统一ORM规则、JPQL查询语言、子查询、高级查询和批量处理等操...

Barudisshu
2014/09/17
758
0
Spring Data JPA 使用

Java 持久层框架访问数据库的方式大致分为两种。一种以 SQL 中心,封装一定程度的 JDBC 操作,比如 MyBatis。另一种是以 Java Entity 为中心,将实体的关系对应到数据库表之间的关系,如 OR...

TurboSanil
06/13
226
0
spring mvc 整合 jpa 搭建基于领域驱动模型框架搭建

一、maven pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h......

漂泊者及其影子
2014/06/16
1K
0
Play框架拾遗之四:域模型与JPA支持

1、属性模拟 对于model,Play中字段都是public修饰符,但框架会自动生成setter与getter如: @Entity@Table(name="product ")public class Product extends BaseModel{ @Id public Long id; ......

奋斗到天明
2015/08/27
988
0

没有更多内容

加载失败,请刷新页面

加载更多

python学习10.04:Python list列表使用技巧及注意事项

前面章节介绍了很多关于 list 列表的操作函数,细心的读者可能会发现,有很多操作函数的功能非常相似。例如,增加元素功能的函数有 append() 和 extend(),删除元素功能的有 clear()、 remo...

太空堡垒185
11分钟前
2
0
新手插画学习的方法?教你如何自学?

插画学习的方法?教你如何自学? 从小喜欢画一些漫画头像随笔画,但是其实没有基础。个人偏好小清新手绘风的插画(如下图),每每看到都希望自己能画出这样的作品。 我其实很想说画这种美术功...

huihuajiaocheng
16分钟前
3
0
面试题

1、实现clone();

gtandsn
27分钟前
3
0
CentOS 7 部署 tesseract-ocr

官方地址 github yum-config-manager --add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_7/ 若提示 yum-config-manager: command not found 执行以......

阿白
28分钟前
2
0
JAVA比较器中comparator的使用

一个专用的比较器Comparator Comparator是一个专用的比较器,当一个不支持自比较或者自比较函数不能满足要求时,可写一个比较器来完成两个对象之间大小的比较。Comparator体现了一种策略模式...

daxiongdi
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部