Facelets ViewHandler



Podobne dokumenty
Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

Złożone komponenty JSF wg

Złożone komponenty JSF wg

Podstawy (X)HTML i CSS

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Podstawowe informacje o technologii Java Persistence API - przykład

Wykład 2 TINT. XHTML tabele i ramki. Zofia Kruczkiewicz

Java Server Faces - wprowadzenie

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Laboratorium 6 Tworzenie bloga w Zend Framework

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Podstawy technologii JavaServer Faces wg

Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie Wykład 2 Technologie internetowe

Wykład 2 Tabele i ramki 1. Tabele 1.1. Podstawy budowy tabel na stronach WWW

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

2 Podstawy tworzenia stron internetowych

Zaawansowana Pracownia Komputerowa - Ćwiczenia. Krzysztof Miernik

XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania.

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Programowanie w Javie 2. Płock, 26 luty 2014 r.

Wykład 1: HTML (XHTML) Michał Drabik

Kurs HTML 4.01 TI 312[01]

Programowanie wielowarstwowe i komponentowe

Wykład 5_2 Arkusze stylów dziedziczenie. Technologie internetowe Zofia Kruczkiewicz

INSTALACJA I KONFIGURACJA SERWERA PHP.

Podstawy technologi JavaServer Faces

JavaServer Faces (JSF)

Aplikacje WWW - laboratorium

Zastosowanie kaskadowych arkuszy stylów (CSS - Cascading Style Sheets) w technologii JavaServer Faces

Aplikacje internetowe

XHTML Budowa strony WWW

Wielowarstwowa aplikacja internetowa. Wykonanie widoku typu tabela. Pliki typu properties. wg

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Aplikacje WWW - laboratorium

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Podstawy JavaScript ćwiczenia

DTD - encje ogólne i parametryczne, przestrzenie nazw

rk HTML 4 a 5 różnice

Aplikacje Internetowe, Servlety, JSP i JDBC

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Web frameworks do budowy aplikacji zgodnych z J2EE

Java jako język programowania

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Oczywiście występują także znaczniki, bez ich odpowiednika kończącego, np. <BR>

Laboratorium 1: Szablon strony w HTML5

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

plansoft.org Zmiany w Plansoft.org

Język (X)HTML. Podstawowe znaczniki i parametry. dr Konrad Dominas / UAM

Pakiety i interfejsy. Tomasz Borzyszkowski

Programowanie internetowe

Odnośniki jeszcze do niedawna odróżniały strony WWW od wszystkich innych dokumentów elektronicznych. Możliwość deklarowania odnośników do innych

Metaprogramowanie w Ruby

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Java wybrane technologie spotkanie nr 5. Java Server Pages

Podstawowe informacje o technologii Java Persistence API - przykład

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

XML extensible Markup Language. Paweł Chodkiewicz

PORADNIK KODOWANIA: CSS

I. Dlaczego standardy kodowania mailingów są istotne?

Programowanie wielowarstwowe i komponentowe JSP, JSF

Tworzenie stron internetowych w kodzie HTML Cz 7

Narzędzia informatyczne w językoznawstwie

HTML DOM, XHTML cel, charakterystyka

Laboratorium 7 Blog: dodawanie i edycja wpisów

Budowa aplikacji wielowarstwowych. Zastosowanie Kaskadowych arkuszy stylów (CSS)

Tworzenie Stron Internetowych. odcinek 9

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Tworzenie Stron Internetowych. odcinek 5

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Serwery aplikacji. dr Radosław Matusik. radmat

Dokumentacja Użytkownika Systemu

Ćwiczenie 7 Instalacja gotowych szablonów. Podstawy budowania własnego szablonu dla CMS Joomla! Dr inż. Robert Banasiak

MasterPage w ASP.NET

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Dodatek Technologie internetowe 1. UTF-8 wg 2. Adresy URL

media Blitz wydajne sytemy szablonów

Java Server Faces narzędzie do implementacji w wy prezentacji

Wybrane działy Informatyki Stosowanej

MVC w praktyce tworzymy system artykułów. cz. 2

KUP KSIĄŻKĘ NA: PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Aplikacje internetowe laboratorium XML, DTD, XSL

Szablony funkcji i szablony klas

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Projekty z Technologii Informacyjnych

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Poznań Java User Group Java Server Faces. Wprowadzenie (Fakty i Mity)

Programowanie komponentowe 5

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

REFERAT O PRACY DYPLOMOWEJ

Tabele. Przykład 15a.htm. <HTML><HEAD><TITLE> Cennik</TITLE></HEAD><BODY><H3>Cennik</H3> <TABLE BORDER="1"> <TR>

Wykład 8: klasy cz. 4

Transkrypt:

JSF i Facelets

Wprowadzenie JSP (JavaServer Pages) są natywną i najczęściej używaną technologią do tworzenia warstwy prezentacyjnej dla JSF (JavaServer Faces) Istnieją alternatywne technologie opisu wyglądu (ang. view description technology) dla JSF z których najbardziej popularna to Facelets Co więcej dzięki ViewHandler API (który jest częścią specyfikacji JSF) możliwe jest dostosowanie istniejącej lub stworzenie zupełnie nowej technologi opisu wyglądu (widoku) dla JSF

Technologia opisu wyglądu Technologia opisu wyglądu zawiera: Używany język znaczników (np. HTML, XML, itp.) Mechanizm pozwalający wiązać (łączyć) znaczniki z komponentami interfejsu użytkownika (np. JSP Custom Tag Library, TagLibrary dla Facelets) Mechanizm pozwalający agregować (składać) fragmenty stron w celu uzyskania strony wynikowej (np. JSTL 'c:import', 'XInclude') (trochę podobne do 'include' w PHP)

Podobieństwa pomiędzy JSP i Facelets Aspekt Tworzenie stron w XMLu Możliwość użycia zunifikowanego EL W sparcie dla taglibs Sposób kompilacji strony Facelets Tak, lub w XHTMLu JSP Tak, składnia JSP XML TAK TAK (od JSP 2.1) TAK TAK XML jest parsowany do Na podstawie XMLa postaci drzewa obiektu tworzony jest kod w TagHandler, a Javie, który jest następnie jest kompilowany do pliku wykonywany. Nie jest.class (bytecode) a tworzony bytecode następnie wykonywany

Niektóre różnice pomiędzy JSP i Facelets Aspekt Facelets Wbudowane wsparcie dla szablonów TAK Wsparcie dla przekazywania parametrów do zawartości szablonu TAK W przypadku wystąpienia błędu dokładna informacja o linii w która go spowodowała TAK Szybkie wsparcie oraz szerokie spektrum dostawców dla tej technologii TAK/NIE JSP NIE (tylko proste include) NIE NIE TAK

Facelets szablony Template client (klient szablonu) start.xhtml Template (szablon) header.xhtml sidebar.xhtml template.xhtml footer.xhtml

template.xhtml Normalny plik XHTML z następującą deklaracją doctype: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">... </html>

template.xhtml Dodatkowo posiada zdefiniowany namespace Facelets (zwyczajowo o nazwie 'ui') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"... </html> xmlns:ui="http://java.sun.com/jsf/facelets">

template.xhtml Jeżeli szablon korzysta z komponentów JSF (h:..., f:..) to też znajdują się w nim deklaracje odpowiednich namaspace'ów (o nazwach 'h' i 'f') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f ="http://java.sun.com/jsf/core" xmlns:h ="http://java.sun.com/jsf/html"> </html>

template.xhtml Aby wstawić do szablonu zmienne fragmenty można użyć tagu ui:insert <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f ="http://java.sun.com/jsf/core" xmlns:h ="http://java.sun.com/jsf/html"> <head> <title> <ui:insert name="tytul">domyślny tytuł</ui:insert> </title> <link rel="stylesheet" type="text/css" href="./css/main.css"/> </head> </html>

ui:insert Jeżeli nie zostanie zdefiniowana zawartość dla nazwy użytej w ui:insert (u nas nazwa to 'tytul'), zostanie użyta zawartość domyślna znajdująca się pomiędzy otwarciem tagu '<ui:insert>' i jego zamknięciem '</ui:insert>'. U nas zawartość domyślna to 'Domyślny tytuł'. Oczywiście zawartość domyślna może być pusta Jeżeli zostanie zdefiniowana zawartość za pomocą tagu ui:define to zostanie użyta ona, zamiast zawartości domyślnej. Definicja mogłaby wyglądać następująco: <ui:define name= tytul >Jakiś tytuł</ui:define>

ui:insert Zobacz dokumentację do ui:insert https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-insert ui:define https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-define

template.xhtml Aby wstawić do szablonu zawartość innego pliku należy użyć tagu ui:include... <head> <title> <ui:insert name="tytul">domyślny tytuł</ui:insert> </title> <link rel="stylesheet" type="text/css" href="./css/main.css"/> </head> <body> <div class= hd > <ui:include src= header.xhtml /> </div>... </body></html>

template.xhtml Można użyć tagu ui:include w powiązaniu z ui:insert... <head> <title> <ui:insert name="tytul">domyślny tytuł</ui:insert> </title> <link rel="stylesheet" type="text/css" href="./css/main.css"/> </head> <body> <div class= hd > <ui:insert name="naglowek"> <ui:include src= header.xhtml /> </ui:insert> </div>... </body></html>

ui:include i ui:insert W ten sposób jeśli nie zdefiniujemy innej zawartości nagłówka (za pomocą ui:define) zostanie włączona (wstawiona) zawartość pliku o nazwie 'header.xhtml', natomiast za pomocą ui:define można zdefiniować własny nagłówek. Tag ui:include pozwala 'składać' strony (szablony) ze zdefiniowanych części (plików). W ten sposób można łatwo powtórnie używać części szablonów, takie jak nagłówek, menu, stopka, ramka z reklamami, itp.

ui:include Zobacz dokumentację do ui:include https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-include

start.xhtml Aby 'wywołać' szablon (czyli utworzyć konkretną stronę na jego podstawie) należy użyć tagu ui:composition. Początek (podobnie jak w 'template.xhtml') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f ="http://java.sun.com/jsf/core" xmlns:h ="http://java.sun.com/jsf/html">

start.xhtml cd. <body> To i wszystko przed tym będzie pominięte w stronie wynikowej <ui:composition template= template.xhtml > <ui:define name= tytul >Super strona</ui:define> <ui:define name= naglowek > <ui:include src= specjalny_naglowek.xhtml /> </ui:define>... </ui:composition> To i wszystko po tym będzie pominięte w stronie wynikowej </body> </html>

ui:composition Wewnątrz tagu ui:composition znajdują się definicje (ui:define) zawartości nazw występujących we włączanym szablonie. Dla nazw z szablonu które nie zostaną zdefiniowane będzie użyta zawartość domyślna. Wszystko co znajduje się przed i po tagu ui:composition będzie pominięte w stronie docelowej

ui:composition Zobacz dokumentację do ui:composition http://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-composition

Zasoby Strona domowa projektu: http://facelets.dev.java.net Dokumentacja dla programistów: http://facelets.dev.java.net/nonav/docs/dev/docbook.html