7.1 c:if, c:forEach
Mindenkinek tetszett a kód a Java kód helyett címkékkel, ezért úgy döntöttek, hogy kibővítik a hatókört. A programozás azonban nem korlátozódik az objektumok létrehozására és tulajdonságaik olvasására. Meg kell hívnia az objektumok metódusait, dolgoznia kell az adatbázissal és más szolgáltatásokkal. Mit kell tenni?
Csak minden Java utasítást címkeként kell ábrázolnia. Volt if
, lesz <if>
, volt for
, lesz, <for>
és így tovább. Oké, oké, csak vicceltem, nem így volt. Nos, nem lehet, hogy az emberek valóban így döntenek. De nem, talán!
A programozók bármilyen címkét hozzáadhattak a kódhoz. Elvileg nincs ok az aggodalomra – a JSP egy bővíthető szabvány. De tovább mentek, és kiadták a JSP Standard Tag Library - JSTL-t. Az oldal így néz ki:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*5}"/>
<c:if test = "${ salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>
Nagyon valószínű, hogy a jövőbeni projektjei során találkozni fog ilyen kóddal, ott adok néhány magyarázatot.
7.2 JSTL funkciók
A JSTL függvények 5 kategóriába sorolhatók:
- Fő címkék;
- Címkék formázása;
- SQL címkék;
- XML címkék;
- Hívó funkciók.
Nem sorolom fel az összeset, de felsorolom a legnépszerűbbeket. Kezdjük a fő címkékkel:
1 | <c:out> |
Kiadja a megadott kifejezést - egyenértékű: <%= %> |
2 | <c:set> |
Egy kifejezés eredményét egy változóba írja |
3 | <c:remove> |
Töröl egy változót |
4 | <c:catch> |
Elkapja a kivételeket |
5 | <c:if> |
az if analógja |
6 | <c:choose> |
analóg kapcsoló |
7 | <c:when> |
Válasszon együtt használva |
8 | <c:otherwise> |
Válasszon együtt használva |
9 | <c:import> |
Lehetővé teszi tartalom felvételét a kódba (az import irányelvvel egyenértékű) |
10 | <c:forEach> |
minden egyes hurokhoz |
tizenegy | <c:param> |
Lehetővé teszi az importálási beállítások megadását |
12 | <c:redirect> |
Átirányítás |
13 | <c:url> |
URL-t hoz létre paraméterekkel |
Csak egy példát mondok, és ezzel fejezem be. Elvileg teljesen lehetséges egy ilyen kód elolvasása némi hozzáértés után. De nem ajánlom az írást.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> Each Tag Example&</title>
</head>
<body>
<c:forEach var = "i" begin = "1" end = "5">
Item <c:out value = "${i}"/><p>
</c:forEach>
</body>
</html>
Gondoljunk csak bele, a Java kódot címkék formájában írjuk, így a JSP elemző ezeket a címkéket Java kódokká alakítja. Valami elromlott ezen a világon.
Egyébként saját címkekönyvtárakat is írhat. Még egyszer dolgoztam egy projektben, ahol ők is. Félelmetes élmény. Amint bármilyen változtatás történik a könyvtárban, az egész jsp azonnal megszakad.
Mit akarsz? A fordítóprogram nem követi nyomon az ilyen változásokat. Csak vizuálisan találhatók meg a generált HTML oldalak megtekintésekor. És ha ezek olyan ritka forgatókönyvek, amelyek nem triviális helyzetekben merülnek fel... Isten áldja a háttérfejlesztést és a statikus gépelést!
GO TO FULL VERSION