Egyéni validációs MessageSource a tavaszi indításkor

1. Áttekintés

MessageSource a tavaszi alkalmazásokban elérhető hatékony funkció. Ez segít az alkalmazásfejlesztőknek különféle komplex forgatókönyvek kezelésében, sok extra kód megírásával, például környezeti specifikus konfigurációval, nemzetközivé válással vagy konfigurálható értékekkel.

Még egy forgatókönyv lehet az alapértelmezett érvényesítési üzenetek módosítása felhasználóbarátabb / egyéni üzenetekké.

Ebben az oktatóanyagban meglátjuk, hogyan konfigurálható és kezelhető az egyéni érvényesítés MessageSource az alkalmazásban a Spring Boot segítségével.

2. Maven-függőségek

Kezdjük a szükséges Maven-függőségek hozzáadásával:

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-validation 

Ezeknek a könyvtáraknak a legújabb verzióit megtalálhatja a Maven Central oldalon.

3. Egyedi érvényesítési példa

Vizsgáljunk meg egy olyan forgatókönyvet, ahol olyan alkalmazást kell kifejlesztenünk, amely több nyelvet támogat. Ha a felhasználó nem a megfelelő részleteket adja meg bemenetként, akkor a hibaüzeneteket a felhasználó területi beállításainak megfelelően szeretnénk megjeleníteni.

Vegyünk egy példát a bejelentkezési űrlap babra:

public class LoginForm {@NotEmpty (message = "{email.notempty}") @Email private String email; @NotNull private String jelszó; // standard getter és beállítók}

Itt olyan érvényesítési korlátozásokat adtunk hozzá, amelyek ellenőrzik, hogy az e-mail egyáltalán nincs-e megadva, de nem követi-e a szokásos e-mail címstílust.

Az egyéni és a lokálspecifikus üzenetek megjelenítéséhez megadhatunk egy helyőrzőt a @Nem üres annotáció.

A email.notempty tulajdonságot egy tulajdonságfájlból oldja meg a MessageSource konfiguráció.

4. A MessageSource Bab

Az alkalmazás kontextusában az üzenet felbontása a pontos nevű babra delegálódik messageSource.

ReloadableResourceBundleMessageSource a leggyakoribb MessageSource megvalósítás, amely megoldja az erőforráscsomagok üzeneteit a különböző lokálok számára:

@Bean public MessageSource messageSource () {ReloadableResourceBundleMessageSource messageSource = új ReloadableResourceBundleMessageSource (); messageSource.setBasename ("osztályút: üzenetek"); messageSource.setDefaultEncoding ("UTF-8"); return messageSource; }

Itt fontos megadni a basename mivel a területi beállításokra jellemző fájlnevek a megadott név alapján lesznek feloldva.

5. Meghatározás LocalValidatorFactoryBean

Ha egyedi névüzeneteket szeretne használni egy tulajdonságfájlban, meg kell határoznunk a LocalValidatorFactoryBean és regisztrálja a messageSource:

@Bean public LocalValidatorFactoryBean getValidator () {LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean (); bean.setValidationMessageSource (messageSource ()); visszatérő bab; }

Azonban vegye figyelembe, hogy ha már meghosszabbítottuk a WebMvcConfigurerAdapter, annak elkerülése érdekében, hogy az egyéni validátort figyelmen kívül hagyjuk, be kell állítanunk az érvényesítőt a getValidator () módszer a szülő osztályból.

Most meghatározhatunk egy tulajdonságüzenetet, például:

email.notempty = ”

ahelyett

„Javax.validation.constraints.NotEmpty.message =”

6. Tulajdonságfájlok meghatározása

Az utolsó lépés egy tulajdonságfájl létrehozása a src / main / resources könyvtárban a névvel basename a 4. lépésben:

# messages.properties email.notempty = Adjon meg érvényes e-mail azonosítót.

Itt ezzel együtt kihasználhatjuk a nemzetközivé válás előnyeit. Tegyük fel, hogy egy francia felhasználónak szeretnénk üzeneteket megjeleníteni az ő nyelvükön.

Ebben az esetben hozzá kell adnunk még egy tulajdonságfájlt a névvel üzenetek_fr.tulajdonságok ugyanazon a helyen (a kód módosítása egyáltalán nem szükséges):

# messages_fr.properties email.notempty = Veuillez fournir unidentiate de messagerie valide.

7. Következtetés

Ebben a cikkben kitértünk arra, hogyan változtathatók meg az alapértelmezett érvényesítési üzenetek a kód módosítása nélkül, ha a konfigurációt előzetesen megfelelően végzik.

Emellett kihasználhatjuk a nemzetközivé válás támogatását is, hogy felhasználóbarátabbá tegyük az alkalmazást.

Mint mindig, a teljes forráskód elérhető a GitHubon.