Tváre JavaServer (JSF) s jarou

1. Prehľad

V tomto článku sa pozrieme na recept na prístup k fazuľkám definovaným na jar z fazule spravovanej JSF a stránky JSF na účely delegovania vykonávania obchodnej logiky na jarné fazule.

V tomto článku sa predpokladá, že čitateľ predtým osobitne porozumel témam JSF aj Spring. Článok je založený na implementácii JSF Mojarrou.

2. Na jar

Na jar si dajme definovať nasledujúcu fazuľu. The UserManagementDAO bean pridá používateľské meno do úložiska v pamäti a je definované nasledujúcim rozhraním:

verejné rozhranie UserManagementDAO {boolean createUser (String newUserData); }

Implementácia fazule sa konfiguruje pomocou nasledujúcej konfigurácie Java:

verejná trieda SpringCoreConfig {@Bean public UserManagementDAO userManagementDAO () {vrátiť nový UserManagementDAOImpl (); }}

Alebo pomocou nasledujúcej konfigurácie XML:

Definujeme fazuľu v XML a zaregistrujeme sa CommonAnnotationBeanPostProcessor zabezpečiť, aby @PostConstruct anotácia sa zdvihne.

3. Konfigurácia

V nasledujúcich častiach sú vysvetlené položky konfigurácie, ktoré umožňujú integráciu kontextov Spring a JSF.

3.1. Konfigurácia Java bez web.xml

Implementáciou WebApplicationInitializer sme schopní programovo nakonfigurovať ServletContext. Toto je na začiatku() implementácia vo vnútri MainWebAppInitializer trieda:

public void onStartup (ServletContext sc) hodí ServletException {AnnotationConfigWebApplicationContext root = nový AnnotationConfigWebApplicationContext (); root.register (SpringCoreConfig.class); sc.addListener (nový ContextLoaderListener (root)); }

The AnnotationConfigWebApplicationContext bootstraps Spring'g kontext a pridá fazuľa registráciou SpringCoreConfig trieda.

Podobne v implementácii Mojarra existuje FacesInitializer trieda, ktorá konfiguruje FacesServlet. Na použitie tejto konfigurácie stačí rozšíriť FacesInitializer. Kompletná implementácia MainWebAppInitializer, je teraz nasledovné:

public class MainWebAppInitializer extends FacesInitializer implements WebApplicationInitializer {public void onStartup (ServletContext sc) throws ServletException {AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext (); root.register (SpringCoreConfig.class); sc.addListener (nový ContextLoaderListener (root)); }}

3.2. S web.xml

Začneme konfiguráciou ContextLoaderListener v web.xml spis žiadosti:

  org.springframework.web.context.ContextLoaderListener 

Tento poslucháč je zodpovedný za spustenie kontextu jarnej aplikácie pri spustení webovej aplikácie. Tento poslucháč vyhľadá jarný konfiguračný súbor s názvom applicationContext.xml predvolene.

3.3. Faces-config.xml

Teraz nakonfigurujeme SpringBeanFacesELResolver v face-config.xml spis:

org.springframework.web.jsf.el.SpringBeanFacesELResolver

EL resolver je zásuvný komponent podporovaný frameworkom JSF, ktorý nám umožňuje prispôsobiť správanie modulu runtime JSF pri vyhodnocovaní výrazov v jazyku Expression Language (EL). Tento prekladač EL umožní runtime modulu JSF prístup k komponentom Spring prostredníctvom výrazov EL definovaných v JSF.

4. Prístup k Spring Beans v JSF

V tomto okamihu je naša webová aplikácia JSF pripravená na prístup k nášmu Spring Bean buď z podporného fazule JSF, alebo zo stránky JSF.

4.1. Od spoločnosti Backing Bean JSF 2.0

K fazuľke Spring je teraz možné získať prístup z fazule JSF. V závislosti od verzie JSF, ktorú používate, existujú dve možné metódy. S JSF 2.0 používate @ManagedProperty anotácia k spravovanej fazuli JSF.

@ManagedBean (name = "registration") @RequestScoped verejná trieda RegistrationBean implementuje Serializable {@ManagedProperty (value = "# {userManagementDAO}") prechodný súkromný IUserManagementDAO theUserDao; private String userName;
 // zakladatelia a zakladatelia}

Upozorňujeme, že getter a setter sú povinné pri používaní @ManagedProperty.

Teraz - na zabezpečenie dostupnosti jarnej fazule zo spravovanej fazule pridáme createNewUser () metóda:

public void createNewUser () {FacesContext context = FacesContext.getCurrentInstance (); boolean operationStatus = userDao.createUser (userName); context.isValidationFailed (); if (operationStatus) {operationMessage = "User" + userName + "created"; }} 

Podstatou metódy je použitie metódy userDao Jarná fazuľa a prístup k jej funkčnosti.

4.2. Z podložia v JSF 2.2

Ďalším prístupom, platným iba v JSF2.2 a novších, je použitie CDI @Inject anotácia. Toto platí pre fazuľa spravovanú JSF (s @ManagedBean anotácia) a fazuľa riadená CDI (s @ Menovaný anotácia).

S anotáciou CDI je to jediný platný spôsob injekcie fazule:

@Named ("registrácia") @RequestScoped verejná trieda RegistrationBean implementuje Serializable {@Inject UserManagementDAO theUserDao; }

Pri tomto prístupe nie sú getter a setter potrebné. Tiež si všimnite, že chýba EL expresia.

4.3. Z pohľadu JSF

The createNewUser () metóda sa spustí z nasledujúcej stránky JSF:

Ak chcete stránku vykresliť, spustite server a prejdite na:

//localhost:8080/jsf/index.jsf

Môžeme tiež použiť EL v zobrazení JSF na prístup k jarnej fazuli. Aby ste to otestovali, stačí zmeniť riadok číslo 7 z predtým predstavenej stránky JSF na:

Tu hovoríme createUser metóda priamo na jarnom DAO, odovzdanie väzbovej hodnoty súboru meno používateľa k metóde zo stránky JSF, pričom sa obchádza spravovaná fazuľa spolu.

5. Záver

Preskúmali sme základnú integráciu medzi kontextmi Spring a JSF, kde máme prístup k fazuľke Spring v fazuli JSF a na stránke.

Stojí za zmienku, že zatiaľ čo runtime JSF poskytuje zásuvnú architektúru, ktorá umožňuje jarnému rámcu poskytovať integračné komponenty, anotácie z jarného rámca nemôžu byť použité v kontexte JSF a naopak.

To znamená, že nebudete môcť používať poznámky ako @Autowired alebo @ Komponent atď. v spravovanej fazuli JSF alebo použite @ManagedBean anotácia k jarnej fazuli. Môžete však použiť @Inject anotácia v spravovanej fazuli JSF 2.2+ aj v jarnej fazuli (pretože Spring podporuje JSR-330).

Zdrojový kód, ktorý je priložený k tomuto článku, je k dispozícii na GitHub.


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