אילוצים ספציפיים למאמת שינה

1. סקירה כללית

במדריך זה נסקור את אילוצי ה- Hibernate Validator, המובנים במאמת ה- Hibernate Validator אך הם מחוץ למפרט אימות שעועית.

לסיכום של אימות שעועית, עיין במאמר שלנו על יסודות אימות שעועית Java.

2. הגדרת מאמת שינה

לכל הפחות, עלינו להוסיף את ה- Validator Hibernate לתלות שלנו:

 org.hibernate.validator hibernate-validator 6.0.16.Final 

שים לב ש- Validator Hibernate אינו תלוי ב- Hibernate, ה- ORM, אותו סקרנו במאמרים רבים אחרים.

בנוסף, חלק מההערות שנציג חלות רק אם הפרויקט שלנו עושה שימוש בספריות מסוימות. לכן, עבור כל אחד מאלה, נציין את התלות הדרושה.

3. אימות ערכים הקשורים לכסף

3.1. אימות מספרי כרטיסי אשראי

מספרי כרטיסי אשראי תקפים חייבים לעמוד בסכום בדיקה, אותו אנו מחשבים באמצעות האלגוריתם של לוהן. ה @מספר כרטיס אשראי האילוץ מצליח כאשר א מחרוזת מספקת את סכום הבדיקה.

@מספר כרטיס אשראי אינו מבצע בדיקה אחרת במחרוזת הקלט. בפרט, זה לא בודק את אורך הקלט. לכן, היא יכולה לאתר רק מספרים שאינם תקפים עקב שגיאת הקלדה קטנה.

שים לב, כברירת מחדל, האילוץ נכשל אם המחרוזת מכילה תווים שאינם ספרות, אך אנו יכולים לומר לה להתעלם מהם:

@CreditCardNumber (ignoreNonDigitCharacters = true) מחרוזת פרטית lenientCreditCardNumber;

לאחר מכן נוכל לכלול תווים כגון רווחים או מקפים:

validations.setLenientCreditCardNumber ("7992-7398-713"); constraintViolations = validator.validateProperty (אימות, "lenientCreditCardNumber"); assertTrue (constraintViolations.isEmpty ());

3.2. אימות ערכים כספיים

ה @מַטְבֵּעַ מאמת בודק אם סכום כספי נתון נמצא במטבע שצוין:

@Currency ("EUR") יתרת MonetaryAmount פרטית;

הכיתה MonetaryMount הוא חלק מ- Java Money. לָכֵן, @מַטְבֵּעַ חל רק כאשר יישום של Money Money זמין.

לאחר שהגדרנו את Java Java נכון, נוכל לבדוק את האילוץ:

bean.setBalance (Money.of (BigDecimal חדש (100.0), Monetary.getCurrency ("EUR"))); constraintViolations = validator.validateProperty (שעועית, "איזון"); assertEquals (0, constraintViolations.size ());

4. אימות טווחים

4.1. טווחים מספריים וכספיים

מפרט אימות השעועית מגדיר כמה אילוצים שנוכל לאכוף בשדות מספריים. מלבד אלה, ה- Validator Hibernate מספק הערה שימושית, @טווח, זה פועל כשילוב של @Min ו @Max,התאמת טווח כולל:

@Range (min = 0, max = 100) אחוז BigDecimal פרטי;

כמו @Min ו @ מקס, @טווח חל על שדות מסוגים פרימיטיביים ועטיפותיהם; ביג-שלם ו BigDecimal, חוּט ייצוגים של האמור לעיל, ולבסוף, ערך כספי שדות.

4.2. משך זמן

בנוסף לביאורים סטנדרטיים של JSR 380 לערכים המייצגים נקודות זמן, מאמת החורף כולל אילוצים עבור מֶשֶׁךגם כן. הקפד לבדוק את פרק זמן ו מֶשֶׁך שיעורים של זמן Java קודם.

כך, אנו יכולים לאכוף משך זמן מינימלי ומקסימאלי על נכס:

@DurationMin (ימים = 1, שעות = 2) @DurationMax (ימים = 2, שעות = 1) משך משך זמן פרטי;

גם אם לא הראנו את כולם כאן, להערה יש פרמטרים לכל יחידות הזמן החל מננו-שניות ועד ימים.

שימו לב, כברירת מחדל, ערכי מינימום ומקסימום כוללים. כלומר, ערך זהה לחלוטין למינימום או למקסימום יעבור אימות.

אם אנו רוצים שערכי הגבול לא יהיו תקפים, במקום זאת, אנו מגדירים את כָּלוּל רכוש שקר:

@DurationMax (דקות = 30, כולל = שקר)

5. אימות מיתרים

5.1. אורך המחרוזת

אנו יכולים להשתמש בשתי מגבלות שונות במקצת כדי לאכוף כי מחרוזת היא באורך מסוים.

באופן כללי, נרצה להבטיח אורך מחרוזת בתווים - זה שאנחנו מודדים עם ה- אורך שיטה - הוא בין מינימום למקסימום. במקרה כזה, אנו משתמשים @אורך על נכס או שדה מחרוזת:

@Length (min = 1, max = 3) פרטי מחרוזת someString;

עם זאת, בשל המורכבויות של Unicode, לפעמים האורך בתווים והאורך בנקודות הקוד שונים. כשאנחנו רוצים לבדוק את האחרון, אנחנו משתמשים @ CodePointLength:

@CodePointLength (min = 1, max = 3) פרטי מחרוזת someString;

לדוגמא, המחרוזת "aa \ uD835 \ uDD0A" אורכה 4 תווים, אך היא מכילה רק 3 נקודות קוד, כך שהיא תיכשל באילוץ הראשון ותעביר את השנייה.

כמו כן, בשתי ההערות נוכל להשמיט את המינימום או את הערך המקסימלי.

5.2. בדיקות על מיתרי ספרות

כבר ראינו כיצד לבדוק שמחרוזת היא מספר כרטיס אשראי תקף. עם זאת, ה- Validator Hibernate כולל כמה אילוצים אחרים למיתרי ספרות.

הראשון שאנחנו בודקים הוא @LuhnCheck. זו הגרסה הכללית של @מספר כרטיס אשראי, בתוך זה הוא מבצע את אותה בדיקה, אך מאפשר פרמטרים נוספים:

@LuhnCheck (startIndex = 0, endIndex = Integer.MAX_VALUE, checkDigitIndex = -1) פרטי מחרוזת someString;

כאן הראינו את ערכי ברירת המחדל של הפרמטרים, כך שהאמור לעיל שווה ערך לפשוטה @LuhnCheck ביאור.

אבל, כפי שאנו רואים, אנו יכולים לבצע את הבדיקה במצע (startIndex ו endIndex) ותגיד את האילוץ איזו ספרה היא ספרת הבדיקה, כאשר -1 פירושו האחרון במצע המסומן.

אילוצים מעניינים אחרים כוללים בדיקת מודולו 10 (@ Mod10Check) ובדיקת המודולו 11 (@ Mod11Check), המשמשים בדרך כלל עבור ברקודים וקודים אחרים כגון ISBN.

עם זאת, במקרים ספציפיים אלה, מאמת המחנה מספק אילוץ לאימות קודי ISBN, @ISBN, כמו גם @EAN אילוץ עבור ברקודי EAN.

5.3. אימות URL ו- HTML

ה @ אורל אילוץ מאמת שמחרוזת היא ייצוג חוקי של כתובת אתר. בנוסף, אנו יכולים לבדוק שלרכיב ספציפי בכתובת האתר יש ערך מסוים:

@URL (פרוטוקול = "https") כתובת אתר מחרוזת פרטית;

אנו יכולים לבדוק את הפרוטוקול, את המארח ואת הנמל. אם זה לא מספיק, יש regexp מאפיין שבו אנו יכולים להשתמש כדי להתאים את כתובת האתר לביטוי רגיל.

אנו יכולים גם לאמת שנכס מכיל קוד HTML "בטוח" (למשל, ללא תגי סקריפט):

@SafeHtml מחרוזת פרטית html;

@ SafeHtml משתמש בספריית JSoup, אשר חייבת להיכלל בתלות שלנו.

אנו יכולים להתאים את חיטוי ה- HTML לצרכינו באמצעות רשימות היתרים המובנות של התגים ( רשימת היתרים המאפיין של ההערה) וכולל תגים ותכונות נוספים ( תגים נוספים ו additionalTagsWithAttributes פרמטרים).

6. אילוצים אחרים

בואו נזכיר בקצרה ש- Validator Hibernate כולל אילוצים ספציפיים לארץ ולמקום, במיוחד עבור מספר מספרי זיהוי ברזילאי ופולני, קודי משלם מסים ודומים. אנא עיין בסעיף הרלוונטי בתיעוד לרשימה מלאה.

כמו כן, אנו יכולים לבדוק כי אוסף אינו מכיל כפילויות עם @UniqueElements.

לבסוף, במקרים מורכבים שאינם מכוסים על ידי הערות קיימות, אנו יכולים להפעיל סקריפט שנכתב במנוע סקריפטים תואם JSR-223. כמובן, נגענו ב- JSR-223 במאמר שלנו על Nashorn, יישום ה- JavaScript הכלול ב- JVMs מודרניים.

במקרה זה, ההערה היא ברמת הכיתה, והסקריפט מופעל על כל המופע, מועבר כמשתנה _זֶה:

@ScriptAssert (lang = "nashorn", script = "_this.valid") מחלקה ציבורית נוסףValidations {פרטי בוליאני valid = true; // סטרים וקובעים סטנדרטיים}

לאחר מכן נוכל לבדוק את האילוץ לכל המופע:

bean.setValid (שקר); constraintViolations = validator.validate (שעועית); assertEquals (1, constraintViolations.size ());

7. מסקנה

במאמר זה, פירטנו את האילוצים ב- Hibernate Validator החורגים מהסט המינימלי שהוגדר במפרט אימות השעועית.

ניתן למצוא את היישום של כל הדוגמאות וקטעי הקוד ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found