A tavaszi MVC modellobjektumok elérése JavaScript-ben
1. Áttekintés
Ebben az oktatóanyagban bemutatjuk, hogyan lehet elérni a Spring MVC objektumokat a Thymeleaf nézetekben, amelyek JavaScript-kódot tartalmaznak. Példáinkban a Spring Boot és a Thymeleaf sablonmotort használjuk, de az ötlet más sablonmotoroknál is működik.
Két esetet fogunk leírni: amikor a JavaScript kód be van ágyazva vagy belső a motor által létrehozott weboldalra, és amikor az külső az oldalon, például egy különálló JavaScript fájlban.
2. Beállítás
Tegyük fel, hogy már konfiguráltunk egy Spring Boot webalkalmazást, amely a Thymeleaf sablonmotort használja. Ellenkező esetben a következő oktatóanyagok hasznosak lehetnek az indításhoz:
- Bootstrap egy egyszerű alkalmazás - arról, hogyan hozhat létre egy Spring Boot alkalmazást a semmiből
- Tavaszi MVC + Thymeleaf 3.0: Új funkciók - a Thymeleaf szintaxis használatáról
Tegyük fel továbbá, hogy alkalmazásunk rendelkezik egy végpontnak megfelelő vezérlővel /index amely egy nézetet megjelenít egy megnevezett sablonból index.html. Ez a sablon tartalmazhat egy beágyazott vagy egy külső JavaScript-kódot, mondjuk script.js.
Célunk, hogy a tavaszi MVC paramétereket beágyazott vagy külső JavaScript (JS) kódból tudjuk elérni.
3. Nyissa meg a Paramétereket
Először létre kell hoznunk azokat a modellváltozókat, amelyeket a JS kódból használni szeretnénk.
Tavaszi MVC-ben ennek különféle módjai vannak. Használjuk a ModelAndView megközelítés:
@RequestMapping ("/ index") public ModelAndView thymeleafView (Map model) {model.put ("szám", 1234); model.put ("message", "Hello from Spring MVC"); return new ModelAndView ("thymeleaf / index"); }
További lehetőségeket találhatunk a bemutatónkban Modell, ModelMap, és ModelView tavasszal MVC.
4. Beágyazott JS kód
A beágyazott JS kód nem más, mint a index.html fájl, amely a elem. A Spring MVC változókat egészen egyszerűen átadhatjuk ott:
var szám = [[$ {number}]]; var message = "[[$ {message}]]";
A Thymeleaf sablonmotor minden kifejezést az aktuális végrehajtás hatókörében elérhető értékkel helyettesít. Ez azt jelenti, hogy a sablonmotor a fent említett kódot a következő HTML kóddá alakítja:
var szám = 1234; var message = "Üdvözlet a tavaszi MVC-től!";
5. Külső JS-kód
Tegyük fel, hogy a külső JS kódunk benne van a index.html fájl ugyanazt használva tag, amelyben megadjuk a src tulajdonság:
Most, ha a Spring MVC paramétereit akarjuk használni script.js, nekünk kellene:
- definiálja a JS-változókat beágyazott JS-kódban, ahogy az előző szakaszban tettük
- hozzáférhet ezekhez a változókhoz a script.js fájl
Ne feledje, hogy a külső JS kódot a beágyazott JS kód változóinak inicializálása után kell meghívni.
Ez kétféleképpen érhető el: a JS-kód végrehajtásának sorrendjének megadásával vagy aszinkron JS-kód-végrehajtás használatával.
5.1. Adja meg a végrehajtás sorrendjét
Ezt úgy tehetjük meg, hogy a beágyazott után deklaráljuk a külső JS kódot index.html:
var szám = [[$ {number}]]; var message = "[[$ {message}]]";
5.2. Aszinkron kódfuttatás
Ebben az esetben az a sorrend, amelyben a külső és beágyazott JS kódot deklaráljuk a index.html nincs jelentősége, de a kódot innen kell elhelyeznünk script.js tipikus, oldalra töltött csomagolóba:
window.onload = function () {// JS kód};
E kód egyszerűsége ellenére a leggyakoribb gyakorlat a használat jQuery helyette. Ezt a könyvtárat foglaljuk elsőnek elem a index.html fájl:
... ...
Most elhelyezhetjük a JS kódot a következőkben jQuery csomagolás:
$ (function () {// JS kód});
Ezzel a csomagolással garantálhatjuk, hogy a JS kód csak akkor kerül végrehajtásra, ha a teljes oldal tartalma, és így az összes többi beágyazott JS kód is teljesen betöltődik.
6. Egy kis magyarázat
Tavaszi MVC-ben a Thymeleaf sablonmotor csak a sablonfájlt elemzi (index.html esetünkben) és átalakítja HTML fájlokká. Ez a fájl viszont más forrásokra is hivatkozhat, amelyek nem tartoznak a sablonmotor körébe. A felhasználó böngészője elemzi ezeket az erőforrásokat, és megjeleníti a HTML nézetet.
Ezért ezeket az erőforrásokat a sablonmotor nem elemzi, és a vezérlőben definiált változókat csak a beágyazott JS-kódba injektálhatjuk, amely ezután elérhetővé válik a külső JS-kód számára.
7. Következtetés
Ebben az oktatóanyagban megtanultuk, hogyan lehet elérni a tavaszi MVC paramétereket egy JavaScript-kódon belül.
Mint mindig, a teljes kód példák a GitHub adattárunkban találhatók.