מבוא לשימוש ב- FreeMarker ב- MVC באביב

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

FreeMarker הוא מנוע תבניות מבוסס Java מקרן תוכנת Apache. כמו מנועי תבנית אחרים, FreeMarker נועד לתמוך בעמודי HTML ב- HTML ביישומים העוקבים אחר דפוס ה- MVC. מדריך זה ממחיש כיצד הגדר את FreeMarker לשימוש ב- MVC באביב כחלופה ל- JSP.

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

2. תלות Maven

מכיוון שמדובר בפרויקט מבוסס Maven, אנו מוסיפים תחילה את התלות הנדרשת ל- pom.xml:

 org.freemarker freemarker 2.3.23 org.springframework spring-context-support $ {spring.version} 

3. תצורות

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

3.1. תצורת רשת אביבית

בואו ניצור מחלקה להגדרת רכיבי רשת. לשם כך, עלינו להוסיף הערות לשיעור @EnableWebMvc, @תְצוּרָה ו @ComponentScan.

@EnableWebMvc @Configuration @ComponentScan ({"com.baeldung.freemarker"}) מחלקה ציבורית SpringWebConfig מרחיב את WebMvcConfigurerAdapter {// כל תצורת האינטרנט תעבור לכאן. }

3.2. הגדר ViewResolver

האביב MVC Framework מספק את ViewResolverממשק, הממפה שמות תצוגה לתצוגות בפועל. ניצור מופע של FreeMarkerViewResolver, ששייך ל אביב-webmvc תלות.

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

@Bean ציבורי FreeMarkerViewResolver freemarkerViewResolver () {FreeMarkerViewResolver resolver = new FreeMarkerViewResolver (); resolver.setCache (נכון); resolver.setPrefix (""); resolver.setSuffix (". ftl"); פותר להחזיר; }

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

3.3. תצורת נתיב תבנית FreeMarker

לאחר מכן, נגדיר את נתיב התבנית, המציין היכן התבניות ממוקמות בהקשר האינטרנט:

@Bean FreeMarkerConfigurer ציבורי freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = FreeMarkerConfigurer חדש (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / views / ftl /"); החזר freeMarkerConfigurer; }

3.4. תצורת בקר האביב

כעת אנו יכולים להשתמש בבקר קפיצי כדי לעבד תבנית FreeMarker לתצוגה. זה פשוט בקר קפיץ קונבנציונאלי:

@RequestMapping (value = "/ cars", method = RequestMethod.GET) init init מחרוזת (@ModelAttribute ("model") ModelMap Model) {model.addAttribute ("carList", carList); להחזיר "אינדקס"; }

ה FreeMarkerViewResolver ותצורות נתיבים שהוגדרו קודם יטפלו בתרגום שם התצוגה אינדקס לתצוגת FreeMarker הנכונה.

4. תבנית FreeMarker HTML

4.1. צור תצוגת תבנית HTML פשוטה

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

כאשר מוגשת בקשה ל / מכוניות URI, Spring יעבד את התבנית באמצעות המודל שהיא מסופקת. בתבנית שלנו, #רשימה הוֹרָאָה מציין כי FreeMarker צריך לולאה מעל carList אובייקט מהמודל, באמצעות אוטו להתייחס לאלמנט הנוכחי ולעבד את התוכן בתוך אותה בלוק.

הקוד הבא כולל גם FreeMarker ביטויים להתייחס לתכונות של כל אלמנט ב carList; או לדוגמא, כדי להציג את רכיבי הרכב הנוכחיים עשה נכס, אנו משתמשים בביטוי $ {car.make}.

FreeMarker אביב MVC שלום עולם

הוסף יצרן רכב:

דֶגֶם:

עשהדֶגֶם
$ {car.make}$ {car.model}

לאחר עיצוב הפלט באמצעות CSS, תבנית ה- FreeMarker המעובדת יוצרת טופס ורשימת מכוניות:

5. מגף אביב

אם אנו משתמשים באביב אתחול, אנו יכולים פשוט לייבא את אביב-מגף-סטרטר-סמן חופשי תלות:

 org.springframework.boot spring-boot-starter-freemarker 2.3.4.RELEASE 

לאחר מכן, עלינו פשוט להוסיף את קובצי התבניות שלנו תחת src / main / resources / templates. Spring Boot אחראי על תצורות ברירת מחדל אחרות כמו FreeMarkerConfigurer ו FreeMarkerViewResolver.

6. מסקנה

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

קוד המדגם במאמר זה זמין בפרויקט ב- Github.