מדריך לשפם עם מגף קפיץ

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

במאמר זה נתמקד בשימוש בתבניות שפם להפקת תוכן HTML ביישומי Spring Boot.

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

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

2. תלות של Maven

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

 org.springframework.boot spring-boot-starter-שפם org.springframework.boot spring-boot-starter-web 

בנוסף, אנו זקוקים לתלות האביב-אתחול-המתנע-רשת.

3. יצירת תבניות

בואו נראה דוגמה וצור יישום MVC פשוט באמצעות Spring-Boot שיגיש מאמרים בדף אינטרנט.

בואו נכתוב את התבנית הראשונה לתוכן המאמר:

 {{#articles}} 

{{publishDate}}

{{מְחַבֵּר}}

{{גוּף}}

{{/ מאמרים}}

נשמור את קובץ ה- HTML הזה, נגיד article.html, אופנה אותו לשלנו index.html:

 {{> פריסה / מאמר}} 

הנה ה מַעֲרָך היא תת-ספריה, ו- מאמר הוא שם הקובץ עבור קובץ התבנית.

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

spring.mustache.suffix: .html

4. בקר

עכשיו בואו נכתוב את הבקר להגשת מאמרים:

@GetMapping ("/ מאמר") ציבורי ModelAndView displayArticle (מודל מפה) {List articles = IntStream.range (0, 10) .mapToObj (i -> createArticle ("כותרת המאמר" + i)) .collect (Collectors.toList ( )); model.put ("מאמרים", מאמרים); להחזיר ModelAndView חדש ("אינדקס", מודל); }

הבקר מחזיר רשימת מאמרים שיוצגו בדף. בתבנית המאמר, התג מאמרים החל מ- # וכלה ב- /, מטפל ברשימה.

זה יחזור על המודל שהועבר ויעבד כל אלמנט בנפרד בדיוק כמו בטבלת HTML:

 {{#articles}} ... {{/ articles}} 

ה createArticle () שיטה יוצרת מאמר למשל עם כמה נתונים אקראיים.

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

עכשיו, בואו נבדוק את היישום שלנו:

@ מבט הריק פומבי givenIndexPage_whenContainsArticle_thenTrue () {ResponseEntity ישות = this.restTemplate.getForEntity ("/ מאמר", String.class); assertTrue (entity.getStatusCode () .equals (HttpStatus.OK)); assertTrue (entity.getBody () .contains ("כותרת מאמר 0")); }

אנו יכולים גם לבדוק את היישום על ידי פריסתו עם:

קפיץ אתחול mvn: לרוץ

לאחר פריסתנו, אנו יכולים להכות localhost: 8080 / מאמר, ונביא את המאמרים שלנו ברשימה:

5. טיפול בערכי ברירת מחדל

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

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

@Bean שפם ציבורי.קומפיילר MustacheCompiler (שפם.תבנית Loader תבנית Loader, סביבת סביבה) {אסם MustacheEnvironmentCollector = חדש MustacheEnvironmentCollector (); collector.setEnvironment (סביבה); להחזיר Mustache.compiler () .defaultValue ("ערך ברירת מחדל כלשהו") .withLoader (templateLoader) .withCollector (אספן); }

6. שפם עם MVC באביב

עכשיו, בואו נדבר כיצד להשתלב עם Spring MVC אם נחליט לא להשתמש ב- Spring Boot. ראשית, בואו נוסיף את התלות:

 com.github.sps. שפם שפם-אביב-נוף 1.4 

האחרון ניתן למצוא כאן.

לאחר מכן, עלינו להגדיר שפם ViewResolver במקום האביב InternalResourceViewResolver:

@Bean הציבור ViewResolver getViewResolver (ResourceLoader resourceLoader) {MustacheViewResolver שפםViewResolver = חדש שפםViewResolver (); mustacheViewResolver.setPrefix ("/ WEB-INF / views /"); mustacheViewResolver.setSuffix (".. שפם"); mustacheViewResolver.setCache (שקר); MustacheTemplateLoader mustacheTemplateLoader = MustacheTemplateLoader (); mustacheTemplateLoader.setResourceLoader (resourceLoader); mustacheViewResolver.setTemplateLoader (mustacheTemplateLoader); להחזיר שפםViewResolver; } 

אנחנו רק צריכים להגדיר את סִיוֹמֶת, איפה שמורות התבניות שלנו, קידומת הרחבת התבניות שלנו ו- templateLoader, שיהיה אחראי על טעינת תבניות.

7. מסקנה

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

לבסוף דנו כיצד לשלב את זה עם אביב באמצעות שפםViewResolver.

כמו תמיד קוד המקור זמין ב- GitHub.


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