当前位置: 首页 > 知识库问答 >
问题:

如何在Tomcat8中使用Bean验证2.0(JSR380)特性?

景康安
2023-03-14
@Valid
public class MyBean{
  private List<@NotNull String> members;
}
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.15.Final</version>
</dependency>

我在Jersey中使用Java8和Tomcat8。

我是否需要以某种方式配置Tomcat以使用2.0实现而不是JDK 8中绑定的默认实现(比如在Jackson中启用可选<>支持)?

共有1个答案

彭硕
2023-03-14

问题的原因是Jersey的Bean验证扩展隐式地带来了较旧版本的Hibernate验证器,而我在pom.xml中显式请求的Hibernate验证器没有使用。

为了解决这个问题,我排除了Jersey隐式调用的hibernate验证器:

<dependency>
            <groupId>org.glassfish.jersey.ext</groupId>
            <artifactId>jersey-bean-validation</artifactId>
            <version>2.27</version>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-validator</artifactId>
                </exclusion>
            </exclusions>
 </dependency>

添加我的Bean验证版本

     <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.15.Final</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.1-b09</version>
    </dependency>

    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>
 类似资料:
  • 我正在使用WebSphere Liberty 19.0.0.2和WebProfile-8.0特性,该特性支持JAXRS-2.1和BeanValidation-2.0。为了更好地支持多部分流,我使用Jersey作为JAX-RS实现,而不是Liberty的默认Apache CXF。 有关相关组件版本控制的一些更多上下文信息 Bean验证1.1(JSR 349)、Bean验证2.0(JSR 380) 下

  • 我正在尝试使用自定义Bean验证来验证应该大于零的数值,但问题是使用如下单个自定义验证器来验证任何数值:整数、浮点数、双......: 整数int; @PositiveNumber双倍双; 这可能吗?

  • 首先,我是Vaadin7的新手。当我发现BeanFieldGroup.class时,我正在尝试一些vaadin演示。正如我所看到的,这个类将一个字段绑定到一个bean属性。在bean中,使用验证约束注释对属性进行注释(JSR303)。在本例中,我的pom.xml包含hibernate验证器依赖项: 我创建了validationmessage.properties文件,并在其中放了一些消息(带有匈牙

  • 基本上,如何将HttpSession或HttpServletRequest注入JSR-303 contraint或Spring@ModelAttribute中,以表示发布的表单数据,从而验证captcha输入? 假设我们在“CAPTCHA_CODE”会话属性中有一个captcha代码,如何编写JSR-303自定义约束将输入与该会话属性进行比较?比如: 最后,介绍如何将请求/会话注入form obj

  • 问题内容: 我正在尝试连接到HTTPS URL,但是我需要使用客户端身份验证以及第三方软件在我的系统上放置的证书。 我丝毫不知道如何找到或使用它,我所要做的只是C#示例代码,这与我为此找到的所有Java答案都大不相同。(例如,KeyStore显然需要某种密码吗?) 这是我拥有的C#示例代码 然后,它仅遍历WS2_store_Certs CertificateCollection并一路检查它们。再进

  • 问题内容: 我正在尝试使用此处指定的Java EE 6验证 http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html 我注释了一个简单的字段 文档说:“对于内置约束,可以使用默认实现”,但是我如何指定这一点。我的约束检查尚未启动。我希望它能在调用该字段的setter方法时起作用。我班上唯一的进口是 我如何/在哪里指定实现?我将约束放在简单POJ