L'elenco delle convalide Javax supportate è Qui.
L'elenco delle convalide dell'ibernazione supportate (estensione Javax) sono Qui.
Ognuna di queste annotazioni "estende" o implica @NotNull
?
Ad esempio, se annoto la seguente entità:
public class Widget {
@Email
private String email;
@URL
private String website;
// etc...
}
fa @Email
e @URL
anche far rispettare @NotNull
? O sono semplicemente applicati / applicati Se tali proprietà sono definite per un particolare Widget
esempio?
Quali annotazioni estendono / implicano @NotNull
e quali no? Ci sono altre relazioni implicite con queste annotazioni?
risposte:
3 per risposta № 1No. Se guardi il codice sorgente di EmailValidator
da hibernate validator, ad esempio, contiene questo codice all'inizio di isValid()
metodo:
if ( value == null || value.length() == 0 ) {
return true;
}
Lo stesso per URLValidator
e così via. Generalmente tutti i validatori per le annotazioni corrispondenti considerano il valore valido quando si tenta di convalidare null
valore, quindi una buona regola empirica sarebbe quella di eseguire sempre le convalide non nulle separatamente.
Modificare: ecco una citazione da Specifica JSR-303 relativo a questo problema:
Sebbene non obbligatorio, è considerato un benepratica per dividere il convalida del vincolo di base dalla convalida del vincolo non nullo (ad esempio, un vincolo @Email restituirà true su un oggetto null, cioè non si occuperà della convalida @NotNull)