1. Java 的static 方法无法访问泛型类的类型参数,所以如果static 方法需要使用泛型能力,就必须使其称为泛型方法。
public class DomainObjectValidator {
private static final Logger LOGGER = LoggerFactory.getLogger(DomainObjectValidator.class);
public static Validator getInstance() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
return factory.getValidator();
}
public static <T> boolean isDomainObjectValid(T object) {
boolean result = true;
if (object != null) {
Set<ConstraintViolation<T>> constraintViolations = getInstance().validate(object);
if (constraintViolations.size() > 0) {
result = false;
for (ConstraintViolation violation : constraintViolations) {
LOGGER.info("filed={}, msg={}, currentValue={}.",
violation.getPropertyPath().toString(),
Objects.toString(violation.getMessage()),
Objects.toString(violation.getInvalidValue())
);
}
}
}
return result;
}
public static <T> Set<ValidateMessage> validateDomainObject(T object) {
Set<ValidateMessage> validateMessageSet = new HashSet<>();
if (object != null) {
Set<ConstraintViolation<T>> constraintViolations = getInstance().validate(object);
if (constraintViolations.size() > 0) {
for (ConstraintViolation violation : constraintViolations) {
ValidateMessage message = new ValidateMessage(
violation.getPropertyPath().toString(),
Objects.toString(violation.getMessage()),
Objects.toString(violation.getInvalidValue())
);
validateMessageSet.add(message);
}
}
}
return validateMessageSet;
}
}
分享到:
相关推荐
`Hibernate Validator`是Java Bean Validation的实现,它为应用程序提供了强大的数据验证功能。`Hibernate Validator`是一个开放源代码项目,由Hibernate团队维护,它基于JSR 303(Bean Validation 1.0)和JSR 349...
5. **classmate-1.3.4.jar**:ClassMate库是Hibernate Validator的一个辅助组件,它用于在运行时解析和处理Java类型信息,包括泛型类型、数组、参数化类型等。在Bean Validation中,这有助于确定验证规则如何应用于...
5. EJB基于JVM和Java EE规范实现,Session Bean用于业务逻辑,Entity Bean用于持久化数据;Stateful Bean保持客户端会话状态,Stateless Bean不维护会话状态。 通过以上知识点的详细解析,考生可以全面理解分布式...
JSR303,全称为Java Specification Request 303,是Java Community Process(JCP)提出的一个标准,用于在Java应用中实现Bean Validation。这个标准定义了一种规范,允许开发者在模型对象(通常称为Beans)上声明...
11.3.1 Java SE中的持久化上下文传播 11.3.2 在对话中合并脱管对象 11.3.3 在Java SE中扩展持久化上下文 11.4 使用EJB 3.0的对话 11.4.1 使用EJB的上下文传播 11.4.2 利用EJB扩展持久化上下文...
struts做的一个网上购物系统的练习,包括了以下几个方面的内容: 1.struts国际化处理, 2.动态DynaValidatorForm的用法, 3.tiles框架的使用, 4.Validator校验, ...7.iterate迭代器和JAVA泛型的用法
- 使用`JSON.parseObject()`或`JSON.parseArray()`时,指定具体的目标类型,避免使用泛型。 - 避免频繁创建`JSON`实例,可以全局共享一个`JSON`对象。 - 对于大量解析或生成的操作,考虑使用`ParserConfig`和`...
在Java世界中,最常见的实现是Hibernate Validator,它是JSR 303/349标准的参考实现。因此,为了在Spring中使用Validation功能,我们通常需要引入以下jar包: 1. `hibernate-validator.jar`:这是Hibernate ...
通过研究这些工具类,开发者可以学习到更多关于Java反射、泛型等高级特性的应用。 总的来说,xwork-2.2.1的源代码是理解Struts2框架的宝贵资源,它揭示了框架的运行机制,提供了许多最佳实践。深入研究源代码,不仅...
字段验证器(Validator)和字符串格式化(StrFormatter)为表单验证和格式化输出提供了便捷的方法。语言特性概述和JavaBean概述为Hutool在这些领域的应用提供了基础。 集合类概述、Bean工具(BeanUtil)和DynaBean...
4. **验证器(Validator)**:在连接被分配给应用程序之前,验证其有效性,确保连接未被数据库中断或超时。 5. **配置参数**:包括最大连接数、最小连接数、超时时间等,可以根据实际需求进行调整,以达到最佳性能和...
1. **API优化**:JDOM 2.0.0对API进行了重构,使其更加符合Java 5及更高版本的编程习惯,如使用泛型和注解,提高了代码的可读性和类型安全性。 2. **性能提升**:在处理大型XML文档时,JDOM 2.0.0通过优化内部数据...
- **为Java 5 更新的API:** Spring Framework 3.0 对 Java 5 提供了更好的支持,包括使用泛型和枚举等功能。 - **Spring 表达式语言(SPEL):** SPEL 是一种强大的表达式语言,可以在运行时查询和操作对象图。 - *...
Spring 2.5改进了对Java泛型的支持,能够保留并利用容器中的类型信息。这意味着你可以更精确地声明bean之间的依赖,减少类型转换的错误,并提升代码的类型安全性。 4. **基于表达式的SpEL(Spring Expression ...
- 验证可以通过自定义Validator实现,Spring MVC提供了Hibernate Validator框架支持,可以方便地进行表单验证。 3. **自定义验证器**: - 在Spring MVC中,可以通过创建一个实现`javax.validation....
5. **集合操作**:包括对Java内置集合的扩展和优化,如泛型工具类、集合转换、查询过滤等。 6. **日期时间处理**:封装了对日期和时间的操作,如日期格式化、时间计算、时区转换等,避免重复编写相同的日期处理代码...
DWR已经默认定义和初始化了常用的Converter,他们分别如下: class="uk.ltd.getahead.dwr.convert.NullConverter"/> class="uk.ltd.getahead.dwr.convert.PrimitiveConverter"/> class="uk.ltd.getahead.dwr....
通常,这样的作业会涉及编写、修改或扩展已有的 Kotlin 代码,以解决特定问题或实现某种功能。学习者可能需要运用到类、对象、函数、协程、数据类、泛型、高阶函数等 Kotlin 的基础和高级特性。 【标签】"Kotlin" ...
Spring Batch 2.0 版本开始全面支持Java 5,这意味着开发者可以利用Java 5 中提供的新特性,如泛型、枚举等,使得代码更加健壮、可维护。 **2.2 块导向处理** Spring Batch 2.0 引入了块导向处理的概念,这是一种...