LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Apache Struts (7) - JSP značky Struts

Probereme si JSP značky používané k jednoduší spolupráci s rámcem Struts.

21.6.2005 06:00 | Miroslav Holubec | Články autora | přečteno 10726×

Uživatelské značky Struts

Knihovna HTML značek

Tyto značky vykreslují elementy HTML stránky, přičemž naprostá většina těchto značek může mít nějakou vstupní hodnotu (většinou se jedná o vstupní položky formulářů). Standartně se tyto hodnoty nastavují v akci do objektu ActionForm, my pak pouze nastavíme atribut property, jenž určí, o kterou položku formuláře se jedná. Chceme-li ovšem brát vstupní hodnoty prvků formuláře odjinud (z DTO objektu apod.), uložíme JavaBean objekt obsahující tyto hodnoty do požadavku (requestu) nebo do session metodou setAttribute(jmeno, objekt). Posléze atributem name určíme jméno objektu, pod kterým je objekt uložen v požadavku (session) a atributem property označíme položku objektu. Pro názornost následují příklady možností:

1) Vstupní hodnoty přímo z formuláře

v akci:
OurForm oForm = (OurForm) form;
oForm.setPolozka("vstup");

a výřez z JSP stránky:
<html:input property="polozka" />

2) Vstupní hodnoty z DTO objektu

v akci:
DTO dto = new DTO();
dto.setPolozka("vstup");
request.setAttribute("dtoObjekt", dto);

a výřez z JSP stránky:
<html:input name="dtoObjekt" property="polozka" />

button

Vykreslí na stránku tlačítko, k čemuž se použije vstupní HTML element button. Použití je platné jenom uvnitř formuláře a je používáno především k javascriptové obsluze událostí. Standartním popiskem tlačítka je nápis Click. Chceme-li tento popisek změnit, můžeme použít buď atribut value, nebo použít tag jako párový, což je výhodné především u multijazyčné aplikace:

 <html:cancel>
   <bean:message key="button.cancel" />
 </html:cancel>

cancel

Podobně jako u značky button dojde ke generování HTML elementu button, standartně je nastaven popisek Cancel. Pokud se formulář odešle tímto tagem do aplikace, nedochází k validaci jeho údajů, přičemž pokud je akce přidružená k tomuto formuláři potomkem DispachAction, provede se metoda cancelled().

checkbox

Vykreslí na stránku checkbox, jenž je zaškrtnutý, pokud hodnota atributu property odpovídá jednomu z řetězců true, yes nebo on. Toto nastavení se dá změnit atributem value. Prohlížeče HTML mají jednu základní necnost, a to tu, že neodesílají do formuláře nezaškrtnuté políčka, je tedy nezbytné postarat se metodou reset() o nastavení správné inicializace po použití formuláře! Nutné je to především proto, že Struts interně znovupoužívají stávající formuláře z důvodů výkonnostních.

errors

Vykreslí na stránku chyby vyskytnuvší se v průběhu validace a akce. Tag je nepárový a samotná podoba HTML kódu je uložena ve zdrojových svazcích zpráv.

form

Základ Struts, označuje vstupní formulář do akce. Většina ostatních značek musí být vnořena uvnitř formuláře. Důležitým atributem je action, který nám označuje url akce z konfiguračního souboru Struts. Atribut method určuje metodu odesílání formuláře, a to buď POST nebo GET.

hidden

Vykreslí skrytý prvek formuláře, jenž se odešle spolu s ostatními položkami. Uživatel nemá žádnou šanci změnit jeho hodnotu (pokud mu to neumožníme javascriptem). Většinou je používaný k určení jména metody akce, která je potomkem DispatchAction.

html

Generuje element html.

img

Atributem src určíme relativní cestu k obrázku uvnitř aplikace, Struts při vykonávání zamění tuto cestu za absolutní.

link

Stejné jako u img s tím rozdílem, že cestu odkazu určíme buď atributem action (akce), forward (přesměrování) nebo page (relativní cesta).

messages

Podobně jako značka errors, s tím rozdílem, že messages předávají nějakou informační zprávu uživateli (ne chybu).

select, option, options, optionsCollection

Vykreslí výberový seznam položek. Kombinací atributů name/property značky select určíme, které položky budou standartně vybrané. Vnořením option určíme jednu položku seznamu, narozdíl od options a optionsCollection, které generují celou sadu. Standartní použití je v akci:

List list = new ArrayList();
//naplň list
request.setAttribute("seznam", list);

a na JSP stránce

<html:select property="polozka">
  <html:options name="seznam" />
</html:select>

password

Vstupní prvek formuláře, jenž skrývá vepsaný text, což je užitečné především z hlediska bezpečnosti. To ovšem neznamená, že heslo odeslané tímto způsobem je bezpečně uloženo, pokud použijete standartní protokol http bez šifrování SSL, heslo putuje nezašifrované sítí až k příjemci!

rewrite

Slouží k převodu relativní cesty k souboru na absolutní podobně jako u link, s tím rozdílem, že se nejedná o odkaz. Použitelné např. k získání cesty ke kaskádovým stylům.

 <link href="<html:rewrite page="/theme/master.css" />" 
       rel="stylesheet" type="text/css" />

submit

Generuje odesílací tlačítko formuláře, podobně jako u cancel a button může být použito jako párová i nepárová značka.

text

Vstupní prvek formuláře používaní k základnímu zadávání textu.

textarea

Vstupní prvek formuláře používaní k zadávání textu většího rozsahu.

xhtml

Použití je jednoduché, značka je nepárová a použije-li se kdekoliv na stránce, Struts automaticky začnou generovat všechny značky jako XHTML elementy.

Knihovna značek Logic

Tyto značky rozhodují o rozhodování na stránce, de facto vytvářejí podmíněný kód JSP stránky. Tato knihovna bude nejspíš časem nahrazena JSTL (Java Standart Tag Library). Podobně jako u HTML tagů jsou u většiny těchto značek použity atributy name/property, které určují dle kterého objektu bude rozhodováno. Je-li prováděno porovnávání s nějakou konstantou, dosazujeme ji do atributu value.

  • empty: tělo se provede, pokud je objekt prázdný
  • equal: tělo se provede, pokud je objekt stejný jako konstanta ve value
  • forward: provede přesměrování typu forward
  • greaterEqual: tělo se provede, pokud je objekt stejný nebo větší než-li konstanta ve value
  • greaterThan: tělo se provede, pokud je objekt větší než-li konstanta ve value
  • iterate: iteruje na kolekci, tj. provede tělo tolikrát, kolik je prvků v kolekci, přičemž je aktualní prvek z kolekce zpřístupněn tělu pod jménem určeným atributem id
  • lessEqual: tělo se provede, pokud je objekt stejný nebo menší než-li konstanta ve value
  • lessThan: tělo se provede, pokud je objekt menší než-li konstanta ve value
  • match: tělo se provede, pokud je objekt obsažen ve value
  • messagesNotPresent: tělo se provede, pokud se nevyskytují žádné příchozí zprávy/chyby z akce. Standartně se hledají pouze chyby, což můžeme přepnout atributem message="true"
  • messagesPresent: tělo se provede, pokud se vyskytují nějaké příchozí zprávy/chyby z akce. Standartně se hledají pouze chyby, což můžeme přepnout atributem message="true"
  • notEmpty: opak empty
  • notEqual: opak equal
  • notMatch: opak match
  • notPresent: opak present
  • present: tělo se provede, pokud je objekt obsažen v nějakém z prostoru proměnných (page, request, session, application). O který prostor se jedná můžeme určit atributem scope
  • redirect: provede přesměrování typu redirect

Typický příklad použití následuje: v požadavku spojení máme uložený ArrayList naplněný DTO objekty obsahujícími členy phone a name.

<logic:present name="list">
  <logic:notEmpty name="list">
    <table>
    <logic:iterate name="list" id="item">
      <tr>
        <td><bean:write name="item" property="name"></td>
        <td><bean:write name="item" property="phone"></td>
      </tr>
    </logic:iterate>
    </table>
  <logic:notEmpty>
<logic:present>

Knihovna značek Bean

Tyto značky v určitých ohledech doplňují tagy používané v JSP k práci s objekty standartu JavaBeans, a navíc slouží k internacionalizaci aplikace. Vzhledem k tomu, že se tato knihovna v mnohém překrývá s JSTL (Java Standart Tag Library), bude v dalších verzích Struts nejspíše zrušena. Proto zde uvádím pouze značky, které v JSTL zatím nenajdete, nebo jsou zatím hojně využívané (write).

message

Slouží k dosazování multijazyčných textů. Podstatnými atributy jsou key, jenž určuje název klíče ze zdrojových svazků zpráv, a bundle, který se používá k odlišení konkrétního svazku (pokud jich používáme více).

write

Vypíše hodnotu objektu určeného klasickou dvojicí atributů property/name.

Odkazy

Podrobnější popis naleznete přímo na stránkách Struts, konkrétně HTML, Logic a Bean Developer Guides.

Příště

si ukážeme načítání zdrojových svazků zpráv přímo z databáze.

Verze pro tisk

pridej.cz

 

DISKUZE

pokracovani serialu? 11.8.2006 20:42 Stanislav Skalicky




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

18.6.2018 0:43 /František Kučera

Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.


Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

13.2.2018 0:41 /František Kučera
Únorový pražský sraz OpenAltu se koná 15. 2. 2018 a tentokrát se vydáme na návštěvu do jednoho pražského datacentra. Sejdeme se v 17:50 v severovýchodní části nástupiště tramvajové zastávky Koh-I-Noor. Po exkurzi se přesuneme do restaurace U Pštrosa (Moskevská 49), kde probereme tradiční témata (svobodný software a hardware, DIY, CNC, SDR, 3D tisk…) a tentokrát bude k vidění i IoT brána od The Things Network.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze