问题标签 [spring-validator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1894 浏览

spring - java.lang.ClassNotFoundException: javax.validation.ValidatorFactory

我正在使用 hibernate-validator-5.2.2.Final jar 进行 spring 验证。当我在类路径中添加 validation-api-1.1.0.Final jar 文件时,会发生此异常:

我的模型类是:

我的控制器:

请让我知道是什么问题以及如何解决它,我已阅读有关此问题的各种教程和错误但无法理解。

0 投票
1 回答
3025 浏览

annotations - Spring 自定义验证器不工作

我正在尝试创建自定义验证器,以仅验证表单中字段的数字。

OnlyNumber.java(注解)

OnlyNumberValidator.java(验证器)

用户.java (Pojo)

添加了验证依赖项:

项目详情: - Spring Boot 1.3.1

当我运行应用程序时,我在 jsp 上收到错误消息,提示无法将类型“java.lang.String”的属性值转换为属性“roleId”所需的类型“java.lang.Long”;嵌套异常是 java.lang.NumberFormatException: For input string: "a"

相反,当我检查登录自定义验证器的 isValid 方法时,我应该收到自定义错误消息Role Id Can be Only Number ,我在该方法中的参数为 null 。

可能是配置有问题或者我遗漏了什么

0 投票
4 回答
15896 浏览

spring-mvc - 嵌套异常是 java.lang.NoClassDefFoundError: 无法初始化类 org.hibernate.validator.internal.engine.ConfigurationImpl

当我@NotNull @NotEmpty在 getParam 中实现注释验证器时,它的原因错误是:

使用hibernate-validator-5.2.2.jar Tomcat 8.0 spring-4.2.3.jar

当我导入 javax.validatorvalidation-api-1.1.0.jar [JSR-349]导致此错误时,

当我删除@NotNull @NotEmptyvalidation-api-1.1.0.final正常工作时。

validation-api-1.1.0.final当我没有导入时@NotNull @NotEmpty出现此错误

我尝试从其他来源下载并导入validation-api-1.1.0.final我也遇到了与上述相同的错误。

org.hibernate.validator.internal.engine.ConfigurationImplhibernate-validator-5.2.2-Final.jar

servlet可能的 bean 配置缺少什么?

导入库

  • hibernate-validator-5.2.2.Final.jar
  • hibernate-validator-annotation-processor-5.2.2.Final.jar
  • hibernate-validator-cdi-5.2.2.Final.jar
  • javax.el-api-3.0.0.jar
  • jboss-logging.jar
  • spring-context-4.2.3.RELEASE.jar
  • spring-beans-4.2.3.RELEASE.jar
  • 验证-api-1.1.0.final.jar
  • classmate-1.3.1.jar
  • slf4j-jdk14-1.7.13.jar

参考

0 投票
1 回答
449 浏览

java - 类级别 bean 验证中的当前组

我在 bean 中有一些组验证:

还有这些方法:

我如何在验证器类中知道当前正在验证哪个组?

我需要根据当前组验证对成员进行验证,例如,如果 DatosGenerales 组正在验证,则仅使用与其相关的成员。

0 投票
1 回答
331 浏览

spring - 为什么类Validator的Autowire不工作但为GeneralValidator工作?

我在我的 java 类中遇到了一个奇怪的行为,想了解这种行为的原因是什么,因为在线调查没有得到与我的情况类似的结果,我不得不问。

我使用 Spring Framework 的 java 程序有一个名为 的类Validator,它的定义如下:

@Autowired现在,在我的代码中的许多其他地方,我使用带有注释的此类,例如:

当我尝试启动我的服务时,我.war失败并出现错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.company.common.validators.Validator]

但是,如果我像这样将名称添加到@Component注释中:

它工作得很好。

为什么我必须在@Component注释中声明验证器类的名称,当它是相同的名称时?我注意到,如果我将班级名称更改为其他任何名称,例如:GeneralValidator它可以正常工作而无需在@Component.

0 投票
1 回答
48 浏览

spring - 数据库中的 Spring Rest Url ID 验证 - 例如:university/{universityId}/campuses/{campusId}/buildings

我想知道如何验证我的 Rest API 路径 ID 的最佳实践。

例如:

当我执行 GET 检索建筑物时,我需要先验证 {universityId} 和 {campusId} 是否确实有效(存在于数据库中),然后再继续。

现在我已经实现了一个自定义 RepositoryValidation,它通过抛出 ResourceNotFoundException() 来提供这些功能,并且在我的服务类中为 GET、PUT、POST..etc 调用这些方法

有没有更好的方法来进行验证?我已阅读有关拦截器或过滤器的信息,但不确定这是否是最佳做法。

自定义例外:

存储库验证:

服务:

0 投票
3 回答
26334 浏览

java - 将 @Validated 和 @Valid 与 spring 验证器一起使用

我有一个 java bean 用于将 JSON 消息发送到 spring @RestController,并且我有 bean 验证设置并且使用@Valid. 但我想转移到 Protobuf/Thrift 并远离 REST。它是一个内部 API,许多大公司已经在内部取消了 REST。这真正意味着我不再控制消息对象——它们是在外部生成的。我不能再给它们添加注释了。

所以现在我的验证必须是程序化的。我该怎么做呢?我已经编写了一个代码Validator,它工作得很好。但它不使用 nice@Valid注释。我必须执行以下操作:

这很臭。我必须在每一种方法中都这样做。现在,我可以将其中的很多内容放入一个抛出的方法中BindException,这样就可以将一行代码添加到每个方法中。但这仍然不是很好。

我想要的是看到它看起来像这样:

并且仍然得到相同的结果。请记住,我的 bean 没有注释。是的,我知道我可以@InitBinder在方法上使用注释。但这仅适用于 Web 请求。

我不介意将正确的Validator注入此类,但如果我的 ValidatorFactory 可以根据该supports()方法提取正确的,我更愿意。

这可能吗?有没有办法将 bean 验证配置为实际使用 Spring 验证?我必须在某个地方劫持一个方面吗?侵入LocalValidatorFactoryMethodValidationPostProcessor

谢谢。

0 投票
1 回答
92 浏览

java - 应用程序级数据库约束转发:如何自动使用 JDBC 和 Spring

我希望能够从本质上反省我的所有实体都绑定到的模式的细节,并将其转发到应用程序层进行验证,这样我就不会将数据(从而浪费资源)提交给将最终被拒绝。

例如:

我可以清楚地看到我可以自己实现这个,但我假设在伟大的世界的某个地方有一个 bean/validator 可以为我完成这项工作。

0 投票
0 回答
434 浏览

spring - 当对象为空而对象不存在时,请求 PATCH 的正文验证

我在这里遇到的问题是 HTTP PATCH 方法,因为它允许部分更新。

我有一个如下的请求正文。

用于请求映射的 Bean:-

检查枚举是一个自定义注释,用于验证传递的值是否与 enumValue 列表中的元素之一完全匹配。

我面临的问题是以下两个请求。

在上述请求中,userAssociationStatus不存在,因此由于它是一个 PATCH,我将忽略它并仅更新其他状态。

下一个请求是

在这种情况下,我想抛出未找到的枚举,因为请求中的对象是空的。

在上述两个请求中,当字段等于 null 时,当字段不存在时,userAssociationStatus等于 null。所以我无法从请求的角度区分正在发生的事情。

问题是如何区分不存在的字段和作为 null 传递的值。

如果需要,可以提供更多信息。

0 投票
1 回答
16340 浏览

java - 方法参数的@Pattern 注解

我正在尝试验证作为方法参数一部分的 emailId 和其余端点的查询参数。在方法参数中使用 @Pattern 注释不起作用。有没有更好的方法来使用注释来处理这种情况

我尝试了上述方法,但它不起作用。因为电子邮件 ID 字段是查询参数,所以我无法将其包装在对象中并在其上添加验证器。

我尝试将它包装在一个包装器对象中,如下所示,但没有运气

EmailId 包装类

}

在这种情况下,我得到一个 conversionnotsupported 错误,这很明显,因为 url 参数是一个字符串并且我正在分配给一个对象。