SpringMVC4+thymeleaf3的一个简单实例(篇四:form表单数据验证)

关于表单数据验证有很多中方法,这里我仅介绍JSR303注解验证。

注意在spring的配置文件spring-mvc.xml中要有这句代码:<mvc:annotation-driven/>,有了它,spring框架会自动加载classpath的jsr303的实现。

JSR303仅仅是一个规范,这里我们要用到它的一个实现:hibernate-validator。

开工之前,我们需要引入以下lib文件到WEB-INF/lib,并添加到classpath:

validation-api-1.1.0.Final.jar

classmate-1.3.1.jar

jboss-logging-3.3.0.Final.jar

hibernate-validator-5.3.2.Final.jar

以上jar文件都在hibernate-validator-5.3.2.Final-dist.zip这里,官网下载http://hibernate.org/validator/


延续前面篇节的内容。

一、修改AnimalForm.java类,在oname,ocount,memo字段上分别加上验证注解,代码如下:

package com.zoo.web.form;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;

public class AnimalForm {

	private long id;
	
	@NotEmpty(message="动物名: 不能为空") 
	private String oname;
	
	@Range(min = 1, message="数量: 必须大于0")
	@NotNull(message="数量: 不能为空")
	private int ocount;
	
	@Size(max = 10, message="备注: 长度不能超过10个字符")
	private String memo;

	/** 省略getter和setter **/

	
}
解释:

@NotEmpty:这个注解表示检查oname字段是不是为空字符串""或者是不是为null,如果是则给出提示信息:"动物名:不能为空"。

它支持的类型包括:字符序列CharSequence(CharBuffer, Segment, String, StringBuffer, StringBuilder);集合Collection(ArrayList, HashSet, Stack, Vector等,很多);Map以及数组arrays。它将检查所给对象的是不是为empty或者null,empty也就是长度为0,对于字符串来说就是""。

@NotNull:检查所标注元素ocount不能为null,如果是则给出提示信息:“数量:不能为空”。

它支持任意类型,检查标注对象是否为null。注意和@NotEmpty的区别,她不检查对象是不是为empty。empty对于字符串来说是空字符串,对于集合以及map或数组来说就是所含元素数量为0。

@Range(min=, max=):表示ocount元素的最小值是1,如果小于1,则给出信息:“数量:必须大于0”。

支持类型:BigDecimal, BigInteger, CharSequence, byte, short, int, long 以及这些原始类型对应的wrapper(包装类)。它将检查所给对象的值是不是大于等于min且小于等于max。

@Size(min=, max=):检查memo对象的长度不能超过10, 否则提示:“备注:长度不能超过10个字符”。

适用于CharSequence, Collection, Map 以及数组,检查标注对象的size是大于等于min并且小于等于max。

注意这么做验证是有问题的,比如oname输入几个空格它会验证通过,

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值