如何将javax.validation导入到我的Java SE项目中?
如何将javax.validation导入到我的Java SE项目中?
问题的原因:需要在Java SE项目中使用javax.validation进行验证,但不清楚如何导入。
解决方法:可以选择使用除Hibernate之外的其他解决方案,比如Bval。以下是使用Bval的解决方法:
1. 在Maven中添加以下依赖项:
javax.validation validation-api 2.0.1.Final org.apache.bval bval-jsr 2.0.2
2. 创建一个静态的validator:
import javax.validation.Validation; import javax.validation.Validator; import org.apache.bval.jsr.ApacheValidationProvider; private static final Validator validator; static { validator = Validation.byProvider(ApacheValidationProvider.class).configure().buildValidatorFactory().getValidator(); }
这样就可以使用javax.validation进行验证了。
优缺点:Bval并不是很流行,但你可能会喜欢它。
问题的出现原因:需要在Java SE项目中导入javax.validation包。
解决方法:
1. 在Maven项目中,可以通过添加以下依赖来导入javax.validation包:
org.hibernate.validator hibernate-validator 6.0.16.Final
这个依赖会自动引入Bean Validation API的依赖,所以不需要再单独导入validation-api的依赖。
2. 如果需要额外的功能,如Expression Language和CDI支持,可以添加以下依赖:
org.glassfish javax.el 3.0.1-b09 org.hibernate.validator hibernate-validator-cdi 6.0.16.Final
以上所有依赖都可以在Maven Central Repository中找到,所以不需要添加JBoss Repository。
另外,示例中给出了一个方便的方法:
public staticvoid validate(T object) throws MigrationException { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set > valRes = validator.validate(object); if (!valRes.isEmpty()) { StringBuilder sb = new StringBuilder("Validation failed for: "); if (object instanceof Origin.Wise) sb.append(((Origin.Wise) object).getOrigin()); else sb.append(object); for (ConstraintViolation fail : valRes) { sb.append("\n ").append(fail.getMessage()); } throw new IllegalArgumentException(sb.toString()); } }
在2013年的版本中,依赖的版本如下:
org.hibernate hibernate-validator 5.4.0.Final org.glassfish javax.el 3.0.1-b08 org.hibernate hibernate-validator-cdi 5.4.0.Final
需要注意的是,提供的URL链接已损坏。
在Java SE项目中如何导入javax.validation的问题是因为该用户在使用Maven时遇到了依赖问题。解决方法是添加所需的依赖项。
该用户在Maven中使用了以下依赖项:
javax.validation validation-api 1.0.0.GA org.hibernate hibernate-validator 4.0.2.GA
该用户可以从以下存储库获取这些依赖项:
jboss JBoss repository https://repository.jboss.org/maven2
用户还可以查看其他答案以获取最新的Bean Validation 1.1版本更新。
整体而言,用户遇到了无法导入javax.validation依赖项的问题,解决方法是在Maven配置文件中添加正确的依赖项和存储库。