Bean:
package Bean.Validator;
public class Person ...{
private String name;
private int age;
public Person(String name,int age)...{
this.name=name;
this.age=age;
}
public Person()...{
}
public int getAge() ...{
return age;
}
public void setAge(int age) ...{
this.age = age;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
}
配置文件:主要配置资源文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>ApplicationResources</value>
</list>
</property>
</bean>
</beans> 校验器:
package Bean.Validator;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
public class PersonValidator implements Validator ...{
public boolean supports(Class arg0) ...{
return Person.class.equals(arg0);
}
public void validate(Object obj, Errors e) ...{
//拒绝name属性为空
ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
Person p=(Person)obj;
if(p.getAge()<0)...{
e.rejectValue("age", "negativevalue");
}else if(p.getAge()>100)...{
e.rejectValue("age","tooold");
}
}
}
测试代码:
getMessage()需要一个数据作为参数,此处可以设置一个空数组即可
package Bean.Validator;
import java.util.List;
import java.util.Locale;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.validation.ObjectError;
import org.springframework.validation.Validator;
public class Test ...{
/** *//**
* @param args
*/
public static void main(String[] args) ...{
String path=new Test().getClass().getResource("/").getPath();
String realpath=path.substring(1, path.length());
ApplicationContext context=new FileSystemXmlApplicationContext(realpath+"/validator.xml");
Person p=new Person();
p.setName(null);
p.setAge(200);
Errors errors=new BindException(p,"person");
//创建校验器
Validator personValidator=new PersonValidator();
//校验
personValidator.validate(p, errors);
//打印错误数量
System.out.println(errors.getErrorCount());
List errorList=errors.getAllErrors();
for(int i=0;i<errorList.size();i++)...{
ObjectError oe=(ObjectError)errorList.get(i);
Object b[]=...{};
System.out.println(context.getMessage(oe.getCode(), b,Locale.getDefault()));
}
}
}
运行结果:
2
Person实例的name属性不能为空
Person实例的age不能大于100
分享到:
相关推荐
这个顺序在实际应用中非常重要,因为它确保了在Bean生命周期的不同阶段,开发者可以按照需求执行相应的清理工作或数据校验等操作。在上述测试中,我们观察到了这个顺序,它为理解Spring Bean的生命周期提供了直观的...
使用监听器对Spring bean id进行唯一校验过程解析 在Spring框架中,bean的定义是非常重要的一部分,而bean的唯一性校验也是一个非常重要的环节。然而,在实际开发中,我们经常会遇到bean id重复的问题,这会导致...
如果内置的校验注解不能满足需求,Spring MVC 允许我们自定义校验注解和校验器。首先,创建一个自定义注解,例如 `@EmailUnique`: ```java @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) ...
总的来说,Spring MVC的数据校验机制结合了注解、自定义校验器以及国际化错误消息,提供了强大的数据验证能力,确保了系统的健壮性。通过阅读这篇博文和分析给出的文件,我们可以深入理解这一机制,并在实际开发中...
在编程领域,拦截器(Interceptor)和校验器(Validator)是两种常见的设计模式,用于增强系统的功能和灵活性。它们通常被用在框架和库中,以提供额外的控制流和数据验证。以下是对这两个概念的详细解释以及它们在源...
除了使用预定义的注解外,Spring还允许我们自定义校验器。通过实现`Validator`接口,我们可以创建自己的校验逻辑。此外,还可以通过`@Constraint`注解来自定义注解,并通过`@Validated`注解在类或方法参数上使用这些...
它整合了Spring框架的功能,提供了模型-视图-控制器(MVC)架构模式,使得开发者可以更专注于业务逻辑,而不是底层实现。在Spring MVC中,数据验证是确保输入数据正确性和安全性的关键环节。 数据验证是任何应用...
当你在控制器的方法参数上使用`@Validated`时,Spring会自动调用验证器来检查传入的对象。 2. **集合元素验证**:对于`List`或其他集合类型的字段,你可以通过在对应的字段声明上使用`@Valid`注解,然后为列表元素...
- 数据绑定、校验以及视图解析器的配置与使用。 6. **数据访问支持**: - JdbcTemplate与SimpleJdbc*系列类的使用方法。 - Spring提供的ORM框架集成支持,包括Hibernate、MyBatis等。 - 事务管理的实现策略与...
2. **配置Spring**:在Spring的配置文件中,你需要将这个自定义校验器注册为bean。这可以通过XML配置或Java配置完成。例如,在XML配置中,你可以添加以下代码: ```xml <bean id="userValidator" class=...
这个Demo可能还包含了测试类,用来验证整个流程的正确性,包括Spring的bean初始化、Hibernate的数据操作以及Validator的数据校验。 总之,这个"spring+hibernate+vaildator"的示例代码旨在演示如何在实际项目中...
本节主要讨论了Spring Core和Spring MVC中的参数校验,以及它们如何利用Bean Validation标准和Hibernate Validator进行数据验证。 Bean Validation是Java平台上的一个规范,它定义了数据验证的元数据模型和API。这...
本篇文章将深入探讨Bean Validation技术,以及如何利用它来对Javabean进行校验。 一、Bean Validation简介 Bean Validation是Java EE的一部分,也是JSR 303和JSR 349规范的实现,后来在Java 8中升级为JSR 380。这个...
标题中的“spring4采用JSR349标准校验数据”指的是Spring框架的第四个主要版本(Spring 4)如何利用JSR 349(Bean Validation 1.1)来实现数据验证的功能。JSR 349是JavaBeans验证的规范,它定义了一种标准化的方式...
这里提到的"springmvc校验器validation的所有配套jar包"是指用于实现Spring MVC中数据验证功能所需的一系列库文件。具体来说,这些jar包通常包括Hibernate Validation、Spring的验证支持以及可能的其他依赖。 ...
除了内置的验证注解,我们还可以创建自定义的校验注解和对应的校验器,以满足特定业务需求。自定义校验注解需要使用`@Constraint`,而校验器则需要实现`Validator`接口。 总结来说,`@Valid`注解在Spring Boot中的...
2. **校验器**:每个约束注解对应一个校验器,负责执行具体的验证逻辑。 3. **验证API**:主要由`Validator`接口和`Validation`类组成,用于创建和使用校验器进行验证操作。 4. **配置**:可以通过`...
3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...