\documentclass{uebung}

\author{Linus Nagel}
\chapter{5}

\begin{document}

\maketitle

\begin{exercises}
    \item Worum handelt es sich bei Facelets und welche Vorteile bietet die Verwendung von Facelets?

    Facelets sind eine Tag Library, die zusätzliche Tags bereitstellt.
    Mit Facelets können Templates erstellt werden, oder wiederholte Ausgaben von html deklerativ in xml erstellt werden.

    \item Wie können Templates mit Facelets erstellt bzw. verwendet werden?

    In Templates wird der generelle Aufbau einer Seite definiert. Dies erfolgt wie in einer normale xhtml Seite, nur mit Platzhaltern (\texttt{<ui:insert>}):
    \begin{xmlCode}
    ...
    <body>
        <ui:insert name="header">
            <ui:include src="default-header.xhtml">
        </ui:insert>
        <ui:insert name="content">
        </ui:insert>
        <ui:insert name="footer">
        </ui:insert>
    </body>
    ...
    \end{xmlCode}

    Verwendet wird ein Template dann, in dem man mit \texttt{<ui:composition>} das template angibt, und mit ui:define die Platzhalter fŭllt:
    \begin{xmlCode}
    <ui:composition template="template.xhtml">
        <ui:define name="content">
            <p>hello world</p>
        </ui:define>
    </ui:composition>
    \end{xmlCode}

    \item Worum handelt es sich bei PrimeFaces?

    PrimeFaces stellen eine Komponentenbibliothek dar, die Komponenten mit AJAX-Unterstützung anbieten.

    \item Welcher Namespace wird für die Verwendung von PrimeFaces benutzt?

    \texttt{xmlns:p}

    \item Wie kann per Ajax auf die Eingabe eines Tastenklicks reagiert werden?

    Indem man auf das \textit{keydown} Event reagiert:

    \begin{xmlCode}
    <p:ajax event="keydown" .../>
    \end{xmlCode}

    \item Zählen Sie vier PrimeFaces-Komponenten auf und geben deren Funktion an.

    \begin{itemize}
        \item \texttt{<p:autocomplete>}: Ermöglicht completion-Vorschläge für ein Input-Feld
        \item \texttt{<p:calendar>}: Kalendar-Datum Eingabe-Element
        \item \texttt{<p:gmap>}: Google-Maps Element
        \item \texttt{<p:textEditor>}: Ein Wysiwyg Texteditor
    \end{itemize}

    \item Erstellen Sie eine JSF-Seite, die eine Klappliste anzeigt in der einer der Werte „Farben“, „Zahlen“ oder „Buchstaben“ ausgewählt werden kann. Darunter befindet sich eine Klappliste die zunächst nur den Inhalt „---“ hat. Nach einer Auswahl in der ersten Klappliste soll ein AJAX-Request generiert werden, der den Inhalt der zweiten Klappliste setzt (denken Sie sich zu den in Klappliste 1 auswählbaren Werten passende Werte aus).

\end{exercises}

\end{document}
