Je veux faire une validation de domaine
dans mon objet j'ai un entier,
maintenant ma question est si j'écris
@Min(SEQ_MIN_VALUE)
@Max(SEQ_MAX_VALUE)
private Integer sequence;
et
@Size(min = 1, max = NAME_MAX_LENGTH)
private Integer sequence;
S'il s'agit d'un entier, lequel est approprié pour la validation de domaine.
quelqu'un peut-il m'expliquer quelle est la différence entre eux?
Merci.
@Min
et @Max
sont utilisés pour valider des champs numériques pouvant être String
(représentant un nombre), int
, short
, byte
etc et leurs wrappers primitifs respectifs.
@Size
est utilisé pour vérifier les contraintes de longueur sur les champs.
Selon la documentation @Size
supporte String
, Collection
, Map
et arrays
tant que @Min
et @Max
supporte les primitives et leurs wrappers. Voir le documentation .
package com.mycompany;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class Car {
@NotNull
private String manufacturer;
@NotNull
@Size(min = 2, max = 14)
private String licensePlate;
@Min(2)
private int seatCount;
public Car(String manufacturer, String licencePlate, int seatCount) {
this.manufacturer = manufacturer;
this.licensePlate = licencePlate;
this.seatCount = seatCount;
}
//getters and setters ...
}
@NotNull
, @Size
et @Min
sont des annotations dites de contraintes, que nous utilisons pour déclarer des contraintes, qui doivent être appliquées aux champs d’une instance Car:
manufacturer
ne sera jamais nul
licensePlate
ne sera jamais nul et devra comporter entre 2 et 14 caractères
seatCount
doit être au moins 2.