Logo Czechitas
Vloženo: 16. 4. 2017

Lekce 07 - Procvičování validací

Osnova:

  1. Organizační věci
  2. Java násobilka
  3. NullPointerException a krokování programu
    1. Ve zdrojovém textu lze zapíchnout tzv. breakpoint Obrázek breakpointu
    2. Program lze spustit v ladicím režimu (broučkem šipka debug místo šipky šipka run)
    3. Po zastavení v breakpointu lze krokovat pomocí Step over (F8)
    4. Najetím na libovolnou proměnnou se zobrazí její obsah
    5. Pro skončení ladění lze zvolit Resume program (F9)
  4. Procvičování (úkoly dle slajdů)
  5. Přestávka
  6. Spring MVC - Validace

Soubory

Materiály z lekce najdete zde: Java2Web-Lekce07.7z

Videozáznam

Na Youtube je záznam z lekce:

Celý playlist na Youtube najdete zde: Java 2 Web - youtube playlist.

Domácí úkol 07

Přidejte validace do úkolů Bezdomovci, Velbloudi a Obvod a obsah obdelníku (viz zadání ze slajdů na hodině).
Úkoly znovu publikujte do cloudu na jejich správné adresy (Bezdomovce na /ukol05, Velbloudy na /ukol06) a nezapomeňte na FTP nahrát i zabalenou verzi celých projektů (7-Zip) do složky /ukoly.

Dále přidejte validace ještě do programu pro výpočet Obvodu a obsahu obdelníka a vystavte jej jako /ukol07. Screenshot s ukázkou validační chyby vystavte do galerie Úkol z lekce 07 na Facebook.

Jak přezobrazit stránku s radiobuttony

Při validování Bezdomovců (a Velbloudů) pravděpodobně narazíte na následující problém:

Při přezobrazení stránky, na které jsou přepínací tlačítka (tzv. radiobuttony), je po zamítnutí validace potřeba obnovit v přepínacích tlačítkách stav (zvoleno / nezvoleno).

U klasických políček <input> stačí nechat vyplnit hodnotu value="${vyplnenyFormular.nazevPolicka}". U radiobuttonů to ale nestačí.

Radiobuttony vypadají takto:


<input type="radio" name="clovek1" value="bezdom"/>
<input type="radio" name="clovek1" value="prof"/>

Pokud byste chtěli, aby jedna položka byla zvolená, bude to vypadat takto:


<input type="radio" name="clovek1" value="bezdom" checked="checked"/>
<input type="radio" name="clovek1" value="prof"/>

Je tedy nutné, aby se podle předchozí hodnoty ${vyplnenyFormular.clovek1} buď vygeneroval do webové stránky nápis checked="checked" nebo ne. Zařídit to lze například trojným operátorem: podminkovyVyraz ? vysledekAno : vysledekNe
Např. pokud bychom chtěl porovnávat řetězec barva, jestli obsahuje slovo "červená":

String barva = "cervena";
Integer kodBarvy =  barva.equals("cervena") ? 0xFF0000 : 0x0000FF;
V JSP se tento trojný operátor zapíše stejně, jen je nutné ho uzavřít do vyhodnocovacích závorek ${ } a je nutné pamatovat na to, že porovnání se nepíše == ani equals(), ale slovíčkem eq. Uvozovky nebo apostrofy jsou jedno a totéž. Celý kód tedy může vypadat například takto:
<input type="radio" name="clovek1" value="bezdom"
        ${vyplnenyFormular.clovek1 eq 'bezdom' ? 'checked="checked"' : ''}/>
<input type="radio" name="clovek1" value="prof"
        ${vyplnenyFormular.clovek1 eq 'prof' ? 'checked="checked"' : ''}/>