[Bean Validation] Lors du retour de java.lang.Boolean avec une méthode commençant par "is ~" Impossible de valider avec AssertTrue / AssertFalse [Java]

Le contenu de l'article est le titre.

La situation qui s'est produite

Dans la vérification de corrélation à l'aide de ʻAssertTrue`, lorsque j'ai essayé d'effectuer une validation telle que "Erreur 1 si" faux ", Erreur 2 si" null "", la méthode n'a pas été appelée au moment de la validation.

@AssertTrue(message = "Hogehoge")
@NotNull(message = "Fuga Fuga")
private Boolean isValid() {
  /*Contrôle de corrélation*/
}

Cause

D'après le document officiel, c'est comme suit. Pour le dire clairement, java.lang.Boolean est un objet, donc donner un nom de méthode commençant par ʻis ~` est une violation de la convention.

Si vous y réfléchissez, c'est une évidence, mais c'est compliqué, alors pardonnez-moi ...

What is a getter? The JavaBeans specification specifies that a getter is a method whose

  • name starts with get and has a return type but no parameter
  • name starts with is, has no parameter and is returning boolean

Exposant: Spécification Bean Validation

Faire face

Vous pouvez le faire appeler en modifiant le nom de la méthode. Cependant, dans ce cas, je ne pense pas qu'il soit nécessaire de spécifier Boolean.

Il y a aussi le problème des getters et des noms de champs.

@AssertTrue(message = "Hogehoge")
@NotNull(message = "Fuga Fuga")
private Boolean getValid() {
  /*Vérification de la corrélation*/
}

Je n'ai pas trouvé d'autre solution.

Impressions

Je pensais pouvoir exécuter plusieurs vérifications de corrélation sur le même champ sans créer d'annotation, mais cela n'a pas fonctionné. Il est assez pénible d'essayer d'équilibrer l'acquisition de valeur et la validation, il est donc sage de séparer l'objet de validation et l'objet d'acquisition de valeur, surtout lorsque les choses se compliquent.

Recommended Posts

[Bean Validation] Lors du retour de java.lang.Boolean avec une méthode commençant par "is ~" Impossible de valider avec AssertTrue / AssertFalse [Java]
[Bean Validation] Lors du retour de java.lang.Boolean avec une méthode commençant par "is ~" Impossible de valider avec AssertTrue / AssertFalse [Java]
La cause n'est pas visible lors de l'appel de méthodes d'autres classes en java
Ajouter une validation de bean avec Micronaut (Java)
[Java] Comment définir le proxy lors du démarrage de Java
Un mémorandum lorsque IME ne peut pas être activé avec VS Code (Ubuntu 20.04)
[Java] Lors de la vérification du format URL avec Bean Validation, il peut être préférable de ne pas utiliser @URL de Hibernate Validator.