簡體   English   中英

驗證錯誤:“找不到類型的驗證器:java.lang.Integer”

[英]Validation error: “No validator could be found for type: java.lang.Integer”

我正在使用 Spring 進行一個項目,為什么我不斷收到以下錯誤?

javax.validation.UnexpectedTypeException:
找不到類型的驗證器:java.lang.Integer

這是我的代碼:

package com.s2rsolutions.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = "sales")
public class Sales {

    @NotEmpty(message = "The above field must not be blank.")
    @Column(name = "ttl_d_sls_lst_mth", nullable = false)
    private Integer ttl_d_sls_lst_mth;

    @NotEmpty(message = "The above field must not be blank.")
    @Column(name = "ttl_d_sls_6_mth", nullable = false)
    private Integer ttl_d_sls_6_mth;

    @Column(name = "date_added")
    private Date addedDate;

    @Id
    @Column(name = "username")
    private String username;

    // other fields/getters/setters omitted for brevity

}

根據NotEmptyjavadoc , Integer 不是要檢查的有效類型。 它用於字符串和集合。 如果您只是想確保 Integer 具有某些值, javax.validation.constraints.NotNull就是您所需要的。

公共@interface NotEmpty

斷言帶注釋的字符串、集合、映射或數組不為 null 或為空。

當提出問題時,只需在整數字段上使用 @Min(1) 而不是 @size 即可。

您可以添加休眠驗證器依賴項,以提供一個驗證器

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

對於這種類型的錯誤:UnexpectedTypeException 錯誤:我們試圖在任何 bean 屬性上使用不正確的 Hibernate 驗證器注釋。 對於我的 Springboot 項目的同樣問題(驗證類型 'java.lang.Integer')

對我@NotNull的解決方案是將@NotNull用於整數。

如問題所述,要解決此錯誤,您必須使用正確的注釋。 在上述問題中, @NotBlank@NotEmpty注釋只能應用於任何 String 字段。

要驗證長類型字段,請使用注釋@NotNull

暫無
暫無

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

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