Validierungsfehler: “Für Typ: java.lang.Integer konnte kein Validator gefunden werden”

Lesezeit: 3 Minuten

Benutzer-Avatar
SJS

Ich arbeite an einem Projekt mit Spring, warum erhalte ich immer wieder die folgende Fehlermeldung?

javax.validation.UnexpectedTypeException:
Für Typ: java.lang.Integer konnte kein Validator gefunden werden

Hier ist mein Code:

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

}

  • siehe diese Antwort forum.springsource.org/…

    – Bala R

    12. Mai 2011 um 18:40 Uhr

  • Sieht so aus, als ob das dem ähnelt, was ich zuvor erlebt habe, dieser Beitrag half mir. So passen Sie an, dass die Fehlermeldungen zum Zeitpunkt der Bindung nicht fehlschlagen. Aussehen dieser Link Weitere Informationen zum Erstellen einer MessageSource-Bean in Ihrem Anwendungskontext und zum Erstellen eines messages.properties-Ressourcenpakets finden Sie hier:

    – Kris

    12. Mai 2011 um 19:02 Uhr


Gemäß der javadoc von NotEmpty, Integer ist kein gültiger Typ für die Überprüfung. Es ist für Strings und Sammlungen. Wenn Sie nur sicherstellen möchten, dass eine Ganzzahl einen Wert hat, javax.validation.constraints.NotNull ist alles, was du brauchst.

public @interface NotEmpty

Bestätigt, dass die annotierte Zeichenfolge, Sammlung, Zuordnung oder das Array nicht null oder leer ist.

  • +1. @NotEmpty, da es proprietär ist, sollte vollständig vermieden werden. Es kann durch @NotNull, @Range und @Size ersetzt werden (je nach Kontext)

    – ChssPly76

    12. Mai 2011 um 20:43 Uhr

  • Stimmen Sie zu, wenn möglich, herstellerspezifische Funktionen zu vermeiden, aber es ist kostenlos und Open Source 🙂

    – Affe

    12. Juli 2012 um 21:08 Uhr

  • Erstaunlich, wie einfach es ist, ein Integer-Feld versehentlich mit a zu versehen @NotEmpty Anmerkung. Und dann erhalten Sie die wenig hilfreiche Warnung „Es konnte kein Validator für die Einschränkung ‚javax.validation.constraints.Size‘ gefunden werden, der den Typ ‚java.lang.Integer‘ validiert.“

    – Michael Piefel

    6. Februar 2017 um 15:35 Uhr

  • Was ausgezeichnet wäre, wäre, wenn es eine Möglichkeit gäbe, eine ausführlichere Fehlermeldung zu erhalten, um zu verstehen, welche Eigenschaft das Problem für die ausgelöste Ausnahme verursacht hat. Wenn das jemand weiß, würde ich mich sehr über eine Antwort freuen. Danke für den Beitrag hat mein Problem gelöst.

    – Beezer

    4. Oktober 2017 um 14:22 Uhr


  • @Beezer ConstraintViolationException hat eine zusätzliche Methode getConstraintViolations(), die die Liste der ConstraintViolation-Objekte zurückgibt, die dann jeweils eine Nachricht haben.

    – Affe

    4. Oktober 2017 um 15:59 Uhr


Da die Frage gestellt wird, verwenden Sie einfach @Min(1) anstelle von @size für ganzzahlige Felder und es wird funktionieren.

Benutzer-Avatar
Thamaraikannan Rajendran

Wie im Problem angegeben, MÜSSEN Sie zur Behebung dieses Fehlers korrekte Anmerkungen verwenden. Bei obigem Problem @NotBlank oder @NotEmpty Die Anmerkung darf nur auf ein beliebiges Zeichenfolgenfeld angewendet werden.

Verwenden Sie die Anmerkung, um ein langes Feld zu validieren @NotNull.

  • @NotEmpty kann auch auf Listen oder andere Sammlungen angewendet werden.

    – José Anibal Rodriguez

    10. September 2021 um 15:27 Uhr


Benutzer-Avatar
tej

Für diesen Typfehler: UnexpectedTypeException FEHLER: Wir versuchen, eine falsche Hibernate-Validator-Anmerkung für eine Bean-Eigenschaft zu verwenden. Für dasselbe Problem für mein Springboot-Projekt (Validierungstyp ‘java.lang.Integer’)

Die Lösung, die für mich funktioniert hat, ist die Verwendung von @NotNull für Ganzzahl.

Sie können die Abhängigkeit vom Ruhemodus-Validator hinzufügen, um einen Validator bereitzustellen

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

1246610cookie-checkValidierungsfehler: “Für Typ: java.lang.Integer konnte kein Validator gefunden werden”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy