簡體   English   中英

如何在Tomcat 8中使用Bean Validation 2.0(JSR 380)功能?

[英]How to use Bean Validation 2.0 (JSR 380) features in Tomcat 8?

Bean Validation 2.0(JSR 380)應該能夠執行以下驗證:

@Valid
public class MyBean{
  private List<@NotNull String> members;
}

但似乎只是忽略了@NotNull注釋。 此外, @NotBlank@NotEmpty注釋將被忽略。

我通過Maven在我的類路徑中有Bean Validation 2.0 API和參考實現:

<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的Java 8和Tomcat 8。

我是否需要以某種方式配置Tomcat以使用2.0實現而不是JDK 8中捆綁的默認實現(如在Jackson啟用Optional<>支持)?

問題的原因是Jersey的Bean Validation擴展隱式地帶來了舊版本的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 Validation版本

     <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>

並添加了Java EL:

    <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>

您是否嘗試將@Valid注釋添加到應該執行驗證的類/字段中?

根據我的經驗,由於某種原因,必須提供此注釋才能執行驗證。

您似乎缺少EL實現,嘗試添加此依賴項:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.1-b09</version>
</dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM