Kapitola 6. Zpracování událostí

Obsah

6.1. Zpracování událostí metodou
6.2. Zpracování událostí listenerem
6.3. Příklad k procvičení

Proces zpracování událostí v JSF vychází z JavaBeans modelu. Rovněž se zde používají třídy událostí a třídy listenerů, které implementují určité rozhraní.

Když některá komponenta vygeneruje událost, je vytvořena instance příslušné třídy události, jež obsahuje informace o svém původci. Obsah těchto informací je odvislý od typu události (pro více informací o třídách událostí viz [6]). Jestliže chceme tuto událost zpracovat, je zapotřebí připojit ke komponentě, která událost generuje, instanci listeneru. Ve třídě listeneru je implementována metoda, která na vzniklou událost určitým způsobem reaguje.

V JSF existují tři typy událostí:

Tyto události lze v JSF zpracovávat dvěma způsoby. Buďto můžete vytvořit výše popsanou třídu listeneru, která bude implementovat rozhraní ActionListener respektive ValueChangeListener, nebo stačí napsat pouze metodu backing beanu, jež událost zpracuje.

6.1. Zpracování událostí metodou

Metoda, která bude zpracovávat události, musí být veřejná, musí vracet typ void a jako parametr musí přijímat některou z tříd událostí. Může tedy vypadat např. takto:

Příklad 6.1. Metoda backing beanu, která zpracovává událost

public void zapnoutVypnout(ActionEvent event) {
    UICommand uic = (UICommand)event.getSource();
    if (uic.getValue().equals("zapnout")) {
        uic.setValue("Vypnout");
    } else {
        uic.setValue("Zapnout");
    }
}

V tomto případě ukládáme do proměnné uic odkaz na tlačítko, ze kterého byla akce vyvolána, a na základě jeho hodnoty value mu pak nastavujeme popisek.

Když chceme ke komponentě přiřadit metodu, která zpracovává události, využijeme atribut actionListener respektive valueChangeListener. Přiřazení naší metody k tlačítku by vypadalo následovně:

Příklad 6.2. Přiřazení metody pro zpracování událostí ke komponentě tlačítka

<h:commandButton value="Zapnout" actionListener="#{bean.zapnoutVypnout}"/>

Tlačítko tedy bude mít ze začátku nastaven popisek Zapnout. Když na něj pak budeme klikat, popisek se bude měnit.

Creative Commons License
Uvedená práce (dílo), jejímž autorem je Bc. David Hanel, podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Zachovejte licenci 3.0 Česko.