פנים JavaServer (JSF) עם אביב

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

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

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

2. באביב

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

ממשק ציבורי UserManagementDAO {בוליאני createUser (מחרוזת newUserData); }

יישום השעועית מוגדר באמצעות תצורת Java הבאה:

מחלקה ציבורית SpringCoreConfig {@Bean UserManagementDAO ציבור UserManagementDAO () {להחזיר UserManagementDAOImpl חדש (); }}

או באמצעות תצורת ה- XML ​​הבאה:

אנו מגדירים את השעועית ב- XML, ורושמים CommonAnnotationBeanPostProcessor כדי להבטיח שה- @PostConstruct הערה נאספת.

3. תצורה

החלקים הבאים מסבירים את פריטי התצורה המאפשרים שילוב של הקשרים האביביים וה- JSF.

3.1. תצורת Java ללא web.xml

על ידי יישום ה- WebApplicationInitializer אנו מסוגלים לקבוע את התצורה של התוכנה ServletContext. להלן בהפעלה() יישום בתוך MainWebAppInitializer מעמד:

חלל ציבורי onStartup (ServletContext sc) זורק ServletException {AnnotationConfigWebApplicationContext root = חדש AnnotationConfigWebApplicationContext (); root.register (SpringCoreConfig.class); sc.addListener (ContextLoaderListener חדש (שורש)); }

ה AnnotationConfigWebApplicationContext אתחול ההקשר של Spring'g ומוסיף את השעועית על ידי רישום ה- SpringCoreConfig מעמד.

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

מחלקה ציבורית MainWebAppInitializer מרחיב פנים פניםInitializer מיישם את WebApplicationInitializer {public void onStartup (ServletContext sc) זורק ServletException {AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext (); root.register (SpringCoreConfig.class); sc.addListener (ContextLoaderListener חדש (שורש)); }}

3.2. עם web.xml

נתחיל בתצורה של ה- ContextLoaderListener ב web.xml קובץ היישום:

  org.springframework.web.context.ContextLoaderListener 

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

3.3. faces-config.xml

כעת אנו מגדירים את SpringBeanFacesELResolver בתוך ה face-config.xml קוֹבֶץ:

org.springframework.web.jsf.el.SpringBeanFacesELResolver

רזולר EL הוא רכיב תומך הנתמך על ידי מסגרת JSF, ומאפשר לנו להתאים אישית את התנהגות זמן הריצה של JSF בעת הערכת ביטויי שפת הביטוי (EL). פותר EL זה יאפשר לרכיבי Spring Spring של זמן הריצה לגישה באמצעות ביטויי EL שהוגדרו ב- JSF.

4. גישה לפולי אביב ב- JSF

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

4.1. מ JSF 2.0 שעועית גב

כעת ניתן לגשת לשעועית האביב מפולי גיבוי של JSF. בהתאם לגירסת ה- JSF שאתה מפעיל, ישנן שתי שיטות אפשריות. עם JSF 2.0, אתה משתמש ב- @ManagedProperty ביאור על השעועית המנוהלת של JSF.

@ManagedBean (שם = "רישום") @RequestScoped מחלקה ציבורית RegistrationBean מיישמת {@ManagedProperty (value = "# {userManagementDAO}") פרטית חולפת IUserManagementDAO theUserDao; שם משתמש מחרוזת פרטי;
 // גטרים וקובעים}

שים לב כי הגטר והגדר הם חובה בעת השימוש ב- @ManagedProperty.

כעת - בכדי לקבוע את הנגישות של שעועית אביבית משעועית מנוהלת, נוסיף את ה- createNewUser () שיטה:

חלל ציבורי createNewUser () {FacesContext context = FacesContext.getCurrentInstance (); operation בוליאניStatus = userDao.createUser (userName); context.isValidationFailed (); אם (operationStatus) {operationMessage = "משתמש" + userName + "נוצר"; }} 

תמצית השיטה היא השימוש ב- userDao שעועית אביב, וגישה לפונקציונליות שלה.

4.2. משעועית תומכת ב- JSF 2.2

גישה אחרת, תקפה רק ב- JSF2.2 ומעלה, היא שימוש ב- CDI @לְהַזרִיק ביאור. זה חל על שעועית מנוהלת JSF (עם @ManagedBean ביאור) ושעועית מנוהלת CDI (עם @ שמות ביאור).

ואכן, עם הערת CDI, זו השיטה התקפה היחידה להזרקת השעועית:

@Named ("רישום") @RequestScoped מחלקה ציבורית RegistrationBean מיישמת באמצעות Serializable {@Inject UserManagementDAO theUserDao; }

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

4.3. מתצוגת JSF

ה createNewUser () השיטה תופעל מדף JSF הבא:

להפעלת הדף, הפעל את השרת ונווט אל:

//localhost:8080/jsf/index.jsf

אנו יכולים להשתמש ב- EL גם בתצוגת JSF כדי לגשת לפולי האביב. כדי לבדוק את זה מספיק לשנות את קו מספר 7 מדף JSF שהוצג בעבר ל:

הנה, אנו קוראים צור משתמש השיטה ישירות על DAO האביב, ומעבירה את ערך הקישור של ה- שם משתמש לשיטה מתוך דף JSF, לעקוף את השעועית המנוהלת כולם ביחד.

5. מסקנה

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

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

המשמעות של זה היא שלא תוכלו להשתמש בהערות כמו @Autowired אוֹ @רְכִיב וכו 'בשעועית מנוהלת על ידי JSF, או השתמש ב- @ManagedBean ביאור על שעועית מנוהלת באביב. עם זאת, תוכלו להשתמש ב- @לְהַזרִיק ביאור בשעועית מנוהלת JSF 2.2+ וגם בשעועית ספרינג (כי אביב תומך ב- JSR-330).

קוד המקור שמלווה מאמר זה זמין ב- GitHub.


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