שינוי מדריך התבניות של Thymeleaf במגף האביב

1. הקדמה

Thymeleaf הוא מנוע תבניות שנוכל להשתמש בו ליישומי Spring Boot. כמו בהרבה דברים, Spring Boot מספק מיקום ברירת מחדל שבו הוא מצפה למצוא את התבניות שלנו.

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

2. התקנה

כדי להשתמש ב- Thymeleaf, עלינו להוסיף את המתנע המתאים של Spring Boot pom.xml:

 org.springframework.boot spring-boot-starter-thymeleaf 2.2.2.RELEASE 

3. שינוי מיקום ברירת המחדל

כברירת מחדל, Spring Boot מחפש את התבניות שלנו ב src / main / resources / templates. אנחנו יכולים לשים את התבניות שם ולארגן אותן בספריות משנה ואין לנו בעיות.

עכשיו, בואו נדמיין שיש לנו דרישה שכל התבניות שלנו יימצאו בספריה שנקראת תבניות -2.

בואו ניצור תבנית לאמירת שלום ונכניס אותה src / main / resources / templates-2:

    Enums ב Thymeleaf 

שלום מ'תבניות / תבניות -2 '

נצטרך גם בקר:

@GetMapping ("/ שלום") מחרוזת ציבורית sayHello () {להחזיר "שלום"; }

עם ההתקנה הבסיסית הזו מהדרך, בואו להגדיר את האביב של האביב לשימוש שלנו תבניות -2 על ידי עקיפת נכס ב- application.properties:

spring.thymeleaf.prefix = classpath: / templates-2 /

עכשיו, כשאנחנו קוראים שלנו HelloControllerנראה את ברכתנו מ שלום.html.

4. שימוש במיקומים מרובים

כעת, לאחר שלמדנו כיצד לשנות את מיקום ברירת המחדל, בואו נראה כיצד אנו יכולים להשתמש במיקומי תבניות מרובים.

לשם כך, בואו ליצור a ClassLoaderTemplateResolver אפונה:

@Bean ציבורי ClassLoaderTemplateResolver secondTemplateResolver () {ClassLoaderTemplateResolver secondaryTemplateResolver = חדש ClassLoaderTemplateResolver (); secondTemplateResolver.setPrefix ("תבניות -2 /"); secondTemplateResolver.setSuffix (". html"); secondTemplateResolver.setTemplateMode (TemplateMode.HTML); secondTemplateResolver.setCharacterEncoding ("UTF-8"); secondTemplateResolver.setOrder (1); secondTemplateResolver.setCheckExistence (נכון); החזר secondTemplateResolver; }

בשעועית המותאמת אישית שלנו, הגדרנו את הקידומת לספריית התבניות המשנית בה אנו משתמשים: תבניות -2. הגדרנו גם את CheckExistance דגל ל נָכוֹן. זה המפתח לאפשר למפתחים לפעול בשרשרת.

עם הגדרה זו, היישום שלנו יכול להשתמש בתבניות כברירת מחדל ראשי / משאבים / תבניות מדריך ו ראשי / משאבים / תבניות -2.

5. טעויות

כשאנחנו עובדים עם Thymeleaf, אנו עשויים לראות את השגיאה הבאה:

שגיאה בפתרון התבנית [שלום], ייתכן שהתבנית לא קיימת או שאיננה נגישה לאף אחד מהפתרונות לתבניות שהוגדרו

אנו רואים הודעה זו כאשר Thymeleaf לא יכולה לאתר את התבנית משום מה. בואו נסתכל על כמה מהסיבות האפשריות לכך וכיצד לתקן אותן.

5.1. שגיאת הקלדה בבקר

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

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

5.2. כולל סיומת הקובץ בבקר

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

5.3. לא משתמש במיקום ברירת המחדל

נראה שגיאה זו גם אם מיקמנו את התבניות שלנו במקום אחר src / main / resources / templates. אם אנו רוצים להשתמש במיקום אחר, עלינו להגדיר את ה- spring.thymeleaf.prefix רכוש או ליצור משלנו ClassLoaderTemplateResolver שעועית לטיפול במספר מיקומים.

6. מסקנה

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

סיכמנו את הדיון בשגיאה שנראה מתי Thymeleaf לא מוצא את התבניות שלנו וכיצד לפתור אותה.

כמו תמיד, ניתן למצוא את קוד הדוגמה ב- GitHub.


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