JavaServer Pages – akčné značky 2.
Ak už máme vytvorenú komponentu JavaBean, určite s ňou potrebujeme nejakým spôsobom komunikovať. Odovzdávať jej parametre a naopak preberať výsledky, ktoré môžeme ešte spracovať, alebo priamo vložiť na stránku. Dnes budeme hovoriť o nastavovaní a čítaní vlastností JavaBeanov a o podmienenom vytváraní komponentov.
Na úvod si musím splniť jednu podlžnosť. V minulom článku som nepovedal, kde vlastne JavaBeany umiestňujeme. Teraz nemyslím na stránke JSP, ale priamo javovské *.class súbory. Skutočné umiestnenie týchto súborov závisí od príslušného aplikačného servera, ktorý používate. Pokiaľ sa pozrieme na Tomcat 4.0.4, tak všetky JavaBean triedy pre príslušnú aplikáciu sa umiestňujú do adresára „CATALINA_HOME/webapps/moja_aplikacia/WEB-INF/classes“. Samozrejme zdrojový kód JavaBeanu (napr. mojBean.java) treba najprv skompilovať.
Ak ste si stiahli a nainštalovali iba JRE – Java Runtime Environment, žiadny zdrojový kód neskompilujete. Podrobnejšie vysvetlenie tohto problému nájdete v druhej časti nášho seriálu. Ak máte nainštalované a nakonfigurované SDK – Software Development Kit pre Javu, s kompiláciou by nemal byť problém. Pre bližšie informácie si prejdite ešte raz druhý článok alebo java.sun.com.
Nastavovanie vlastností JavaBeanov
Pre nastavenie vlastností sa používa akcia jsp:setProperty, ktorá má niekoľko atribútov – znak „|“ (pipe, Ctrl_Alt_W) znamená, že máte na výber viac možností:
name
: Pomocou tohto atribútu sa odvoláte na konkrétnu komponentu. Na jednej stránke môže byť totiž vytvorených niekoľko inštancií rôznych JavaBeanov, pričom každá má jedinečnéid
. Takže ak chcem nastaviť nejakú vlastnosť JavaBeanu sid = "myBean"
potomname = "myBean"
. Tento atribút akceptuje buď pevný reťazec alebo výraz JSP (<%= výraz %>
), ktorý sa vyhodnotí v čase požiadavky na stránku.property
: Je názov vlastnosti, ktorú chcete nastaviť alebo zmeniť. Názov tejto vlastnosti musí odpovedať metóde setXxx() v príslušnom JavaBeane. Atribútproperty
akceptuje len pevne zadané reťazce, nie výrazy JSP.value
: Toto je hodnota, ktorú chcete nastaviť pre danú vlastnosť, určenú pomocouproperty
. Tento atribút akceptuje ako pevné reťazce tak aj výrazy JSP.param
: Používa sa ako náhrada zavalue
pri problémoch s rôznymi dátovými typmi. Bližšie objasním jeho význam nižšie.
<jsp:setProperty name = „myBean | <%= výraz %>“
property = „someProperty“
value = „string | <%= výraz %>“ | param = „parameter“ />
Velmi často sa vlastnosti JavaBeanov nastavujú s využitím implicitného objektu request, ktorý poskytuje metódu getParameter()
. Pričom parameter
je atribút name
HTML elementu. Napr. máme stránku form.htm:
<form action=“test.jsp“>
<input type=“text“ name=“meno„>
<input type=“submit“ name=“potvrd“ value=“OK“>
</form>
Po zadaní textu do poľa meno
a kliknutí na OK sa zavolá stránka test.jsp:
<%@ page language = „java“%>
<%@ page contentType=“text/html“%>
<%@ page import=“Bean“ %>
<jsp:useBean id=“myBean“ scope=“page“ class=“Bean“/>
<jsp:setProperty name=“myBean“ property=“meno„
value=“<%= request.getParameter(„meno„)%>“/>
Samozrejme, že uvádzam len to podstatné zo stránky. Na príklade vidíte, že atribút value
vlastnosti meno
napĺňam pomocou výrazu <%= request.getParameter("meno")%>
. Pri požiadavke na stránku sa teda nastaví vlastnosť meno
v beane myBean
. Zdrojový kód beanu je nasledovný:
public class Bean {
private String meno;
public void setMeno(String meno) {
this.meno = meno;
}
}
Tento bean nespraví zatiaľ nič iné, len nastaví hodnotu privátnej premennej meno
na hodnotu, ktorú ste zadali do formulára meno
. V tomto mechanizme je jeden háčik. Metóda getParameter()
vracia vždy String
. Lenže my môžeme potrebovať nastaviť vlastnosť, ktorá je iného dátového typu ako String
. Obvykle by sa to riešilo pretypovaním, ale tento spôsob je trochu nepraktický. JSP nám naštastie ponúka jednoduchý spôsob, ako to vyriešiť.
Ten spôsob je ďalší parameter akcie jsp:setProperty, ktorý sa volá param
. Tento atribút prepojí vlastnosť JavaBeanu s parametrom požiadavku a automaticky vykoná správnu konverziu dátového typu String
na skutočný dátový typ vlastnosti. Atribút param
sa používa namiesto atribútu value
.
<jsp:setProperty
name = „myBean“
property = „vlastnost“
param = „parameter“ />
Získavanie vlastností JavaBeanov
Ak potrebujete získať hodnotu nejakej vlastnosti združenej s JavaBeanom, máte k dispozícii akciu jsp:getProperty, ktorá má dva atribúty name
a property
.
<jsp:getProperty name = „myBean“ property = „vlastnost“ />
<%= myBean.getVlastnost(); %> // ekvivalent predchádzajúceho zápisu
Treba si uvedomiť, že hodnota vlastnosti sa vloží na to miesto do stránky, kde sa zavolá. Ak však potrebujeme s hodnotou ešte manipulovať, vložiť do cyklu alebo podmienky, musíme použiť priamy prístup k vlastnosti cez metódu getVlastnost()
.
<% String s = myBean.getVlastnost(); %>
Automatické združenie vlastností so vstupnými parametrami
Toto je veľmi užitočná vec. Spočíva v tom, že nemusíte postupne zlučovať vstupné parametre s vlastnosťami. Jediné čo treba urobiť je nastaviť atribút property = "*"
.
<jsp:setProperty name = „myBean“ property = „*“ />
Toto zabezpečí, že JSP engine prevezme všetky vstupné parametre z objektu request
a zlúči ich s príslušnými vlastnosťami JavaBeanu. Samozrejme musí byť zachovaná menná konvencia. Teda ak vstupný parameter je napr. customer
, potom bean musí obsahovať metódu setCustomer()
.
Podmienené vytváranie komponentov
V podstate ide o určenie, za akých podmienok sa vytvorí nová inštancia JavaBeanu. V prípade zdieľania beanov platí, že akcia jsp:useBean spôsobí vytvorenie novej komponenty len vtedy, ak sa nenájde žiadna iná komponenta s rovnakým id
a scope
. Ak sa nájde takáto komponenta, potom sa prepojí s premennou, na ktorú odkazuje id
.
Namiesto akcie <jsp:useBean ... />
môžete používať <jsp:useBean ...> príkazy </jsp:useBean>
. Rozdiel je v tom, že príkazy medzi začiatočným a ukončovacím elementom sa vykonajú len vtedy, ak sa vytvára nová komponenta. Ak sa použije už existujúca komponenta, príkazy sa nevykonajú. Toto sa používa hlavne na úvodnú inicializáciu beanu.
<jsp:useBean id = „myBean“ class = „Bean“ scope = „application“>
<jsp:setProperty name = „myBean“
property = „numOfCustomers“ value = „<%= numberOfCust %>“ />
</jsp:useBean>
Na záver vám ponúkam možnosť vyskúšať si príklad on-line.
Mohlo by vás také zajímat
-
Rychlost serveru: Klíč k lepšímu umístění ve vyhledávačích
7. června 2024 -
Vaše pošta může být špatně nastavena – svěřte ji profesionálům
13. července 2023 -
Monitory OLED: klíčové pojmy a funkce
13. května 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024