Jakarta Validation
Java Bean Validation on laajalti tunnettu standardina, joka integroi validoimislogiikan Java-sovelluksiin. Se käyttää yhtenäistä lähestymistapaa validointiin sallimalla kehittäjien merkitä domainmallin ominaisuudet deklaratiivisilla validointirajoitteilla. Nämä rajoitteet pakotetaan ajonaikaisesti, ja käytössä on sekä valmiita että käyttäjän määrittämiä sääntöjä.
webforJ integroituu Bean Validationiin JakartaValidator-sovittimen kautta, tarjoten täyden tuen suoraan käyttöön.
Asennus
On tarpeen sisällyttää yhteensopiva toteutus, kuten Hibernate Validator, luokkahakemistoon. Jos ympäristössäsi ei ole tätä toteutusta oletuksena, voit lisätä sen manuaalisesti seuraavien Maven-riippuvuuksien avulla:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>8.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.glassfish.expressly</groupId>
<artifactId>expressly</artifactId>
<version>5.0.0</version>
</dependency>
JakartaValidator
JakartaValidator-luokka toimii sovittimena, yhdistäen webforJ:n sidontakontekstin Jakarta Validointiin. Tämä integraatio mahdollistaa monimutkaisten validointisääntöjen käytön suoraan anotaatioiden kautta bean-luokassa.
JakartaValidator-aktivointi
Aktivoidaksesi JakartaValidatorin koko kontekstissa, käytät yleensä useJakartaValidator-parametria rakentaessasi BindingContextia.
BindingContext<User> context = new BindingContext<>(User.class, true);
Rajoitteiden määrittäminen bean-ominaisuuksille
Anotaatiopohjaiset rajoitteet sovelletaan suoraan bean-luokassa validoimisolojen määrittämiseksi, kuten alla olevassa esimerkissä on havainnollistettu:
public class Hero {
@NotEmpty(message = "Nimi ei voi olla tyhjää")
@Length(min = 3, max = 20)
private String name;
@NotEmpty(message = "Määrittelemätön voima")
@Pattern(regexp = "Fly|Invisible|LaserVision|Speed|Teleportation", message = "Virheellinen voima")
private String power;
// getters and setters
}
Tällaiset rajoitteet ovat yhtä tehokkaita kuin ohjelmallisesti sidontavaiheessa asetetut, ja tuottavat johdonmukaisia validointituloksia.
Tällä hetkellä JakartaValidator tunnistaa vain rajoitteet, jotka on suoraan määritetty ominaisuuksille, ja se ohittaa kaikki validoinnit, jotka eivät ole suoraan liittyneet ominaisuuksiin.
Paikalliset validointiviestit 25.12
Jakarta Validation tukee lokalisoituja rajoitetiedotteita standardin mukaisen viestin interpoloinnin kautta. Kun vaihdat sovelluksen kieltä, JakartaValidatorin on tiedettävä uusi kieli, jotta se voi ratkaista viestit oikealla kielellä.
JakartaValidator toteuttaa LocaleAware-rajapinnan, mikä tarkoittaa, että BindingContext.setLocale() välittää automaattisesti kieliasetuksen kaikille kontekstin Jakarta-validointijoukoille. Sinun ei tarvitse päivittää jokaista validaattoria manuaalisesti.
BindingContext<Hero> context = new BindingContext<>(Hero.class, true);
// Kun kieli muuttuu, Jakarta-validointijoukot automaattisesti
// tuottavat viestejä uudessa kielessä
context.setLocale(Locale.GERMAN);
Komponentissa, joka toteuttaa LocaleObserver, kutsu context.setLocale() sisällä onLocaleChange():ssa pitämään validointiviestit synkronoituina käyttöliittymän kielen kanssa:
@Override
public void onLocaleChange(LocaleEvent event) {
context.setLocale(event.getLocale());
}
Katso dynaamiset validointiviestit saadaksesi lisätietoja paikallista huomioivia validaattoreita.