Złożone komponenty JSF wg

Podobne dokumenty
Złożone komponenty JSF wg

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

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

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

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

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

Podstawy technologii JavaServer Faces wg

Budowa prostej aplikacji wielowarstwowej

Budowa aplikacji wielowarstwowych, zastosowanie obiektów transferowych, konwerterów i walidatorów

Budowa aplikacji wielowarstwowych. Zastosowanie konwerterów oraz plików typu properties.

Podstawowe informacje o technologii Java Persistence API - przykład

Zastosowanie technologii Ajax w ramach technologii JavaServer Faces wg

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

Facelets ViewHandler

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

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

Podstawy technologii JavaServer Faces wg

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Zastosowanie słuchaczy zdarzeń wg

JavaServer Faces (JSF)

Podstawowe informacje o technologii Java Persistence API - przykład

Konwersja danych. Programowanie komponentowe 4. wg bnaph.html

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

Java Server Faces - wprowadzenie

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

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

Nr pyt. 5 zal 4.0

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń, zastosowanie walidatorów, wykonanie listy typu Drop Down List.

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

Podstawy technologi JavaServer Faces

Java Server Faces narzędzie do implementacji w wy prezentacji

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Programowanie wielowarstwowe i komponentowe JSP, JSF

termin Podobna wada 2) jak w Sklep_ , zal. 3.0 termin

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Zastosowanie walidatorów oraz komponentów wyboru wg

termin. Podobna wada 2) jak w Sklep_6

termin Podobna wada 2) jak w Sklep_ , zal. 3.0 termin

Budowa aplikacji wielowarstwowych. zastosowanie walidatorów.

)<h:commandLink action="#{managed _produkt.dane_pro duktu}" value="ok" actionlistener="#{m anaged_produkt.

Programowanie komponentowe 5

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

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

Programowanie wielowarstwowe i komponentowe

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

Podstawy (X)HTML i CSS

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

29. Poprawność składniowa i strukturalna dokumentu XML


Zastosowanie komponentów EJB typu Session

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

Kontynuacja programu z lab2 refaktoryzacja kodu oparta na dodaniu obiektu transferowego oraz stronicowania tabeli w formularzu JSF

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

DTD - encje ogólne i parametryczne, przestrzenie nazw

Zastosowanie konwerterów wg

Java EE: JSF + EJB + JPA + CDI + BV

JavaServer Faces JSFLab

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

JAVA SERVER FACES jest to nowy framework Javy do tworzenia interface u użytkownika dla aplikacji sieciowych.

Aplikacje WWW - laboratorium

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

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

Wykład 7: Pakiety i Interfejsy

HTML DOM, XHTML cel, charakterystyka

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Infrastruktura aplikacji WWW II

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Zaawansowane aplikacje internetowe - laboratorium

Metody dostępu do danych

Dokumentacja do API Javy.

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

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

Java wybrane technologie spotkanie nr 5. Java Server Pages

Zastosowanie technologii Ajax w ramach technologii JavaServer Faces wg

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Podstawowe wykorzystanie Hibernate

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

Aplikacje internetowe i rozproszone - laboratorium

Tworzenie własnych komponentów

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

Język UML w modelowaniu systemów informatycznych

Aplikacje RMI Lab4

Warszawa JUG. Struts 2 rusztowanie dla Łebu

XML extensible Markup Language. Paweł Chodkiewicz

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Aplikacje WWW - laboratorium

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

Rola języka XML narzędziem

Aplikacje RMI

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Enterprise JavaBeans (EJB)

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Aplikacje WWW - laboratorium

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Transkrypt:

Złożone komponenty JSF wg https://docs.oracle.com/javaee/7/jeett.pdf http://www.coreservlets.com Technologie internetowe 9 1

Opis znaczników obsługiwanych przez Facelets (tutorial EE 7) 2

Przegląd znaczników JSF (UI) - composite wykład3: http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/ti_/tint_3.pdf Znacznik composite:interface composite:implementation composite:attribute composite:insertchildren Funkcja znaczników szablonu Definicja jednego komponentu jako połączenie cech wielu komponentów Definiuje implementację kompozytowego komponentu. W przypadku definicji composite:interface implementacja musi być zgodna z tą definicją Deklaracja atrybutu instancji komponentu, do którego ten znacznik jest przypisany Dowolny komponent lub tekst szablonu ze znacznikiem kompozytowym w używanej stronie jest powtarzany w punkcie umieszczenia tego znacznika w ramach znacznika composite:implementation 3

Przegląd znaczników JSF (UI) - composite (cd) composite:valueholder composite:editablevalueholder composite:actionsource Deklaracja znacznika wewnątrz znacznika composite:interface. Definicja implementacji ValueHolder właściwego dla obiektów używanych na stronie Deklaracja znacznika wewnątrz znacznika composite:interface. Definicja implementacji EditableValueHolder właściwego dla obiektów używanych na stronie Deklaracja znacznika wewnątrz znacznika composite:interface. Definicja implementacji actionsource właściwego dla obiektów używanych na stronie 4

Biblioteki znaczników obsługiwanych przez Facelets wykład3: http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/ti_/tint_3.pdf Biblioteki znaczników Composite Component Tag Library URI Prefiks Przykład Zawartość http://xmlns.jcp.org /jsf/composite cc: cc:interface Znaczniki wspierające komponenty kompozytowe 5

Nazwa atrybutu name default required method-signature Atrybuty komponentu złożonego Opis Specyfikuje: nazwę atrybutu komponentu złożonego, używanego przez stronę, wykorzystującej dany component. alternatywnie, ten atrybut może reprezentować nazwę standardowego słuchacza zdarzeń: action lub actionlistener, nazwę ManagedBean Specyfikuje domyślną nazwę atrybutu komponenetu złożonego Określa, kiedy nazwa jest atrybutu jest obowiązkowa Specyfikuje podklasę klasy java.lang.object, jako atrybut komponentu złożonego i deklaruje definicję metody. Atrybuty type i method-signature wzajemnie się wykluczają. Jeśli specyfikuje się teb dwa atrybuty jednocześnie, atrybut methodsignature jest ignorowany. Domyślny typ atrybutu jest java.lang.object. Uwaga: Wyrażenie specyfikujące metodę jest podobne do specyfikacji atrybutu, ale zamiast definiować dynamikę właściwości metody, wspiera wywołanie metody podanego obiektu, podając specyfikację zbioru przekazywanych parametrów i zwracany wynik wywołania tej metody (jeśli ta metoda zwraca wynik). 6

default: Przykłady definicji atrybutów <composite:attribute name="username" default="admin"/> method-signature: <composite:attribute name="myaction" method-signature="java.lang.string action()"/> type: <composite:attribute name="dateofjoining" type="java.util.date"/> 7

Odwołanie do komponentu typu Managed Bean Aby komponent złożony mógł realizować przetwarzanie po stronie serwera, należy go powiązać z komponentem typu Managed Bean w następujący sposób: przekazanie referencji komponentu Managed Bean do złożonego komponentu bezpośrednie użycie właściwości komponentu typu Managed Bean w komponencie złożonym 8

Walidacja wartości komponentu złożonego Walidacja w technologii JSF jest używana w złożonych komponentach wejściowych zdefiniowanych za pomocą znaczników typu composite:valueholder composite:editablevalueholder. Znaczniki walidacji Nazwa f:validatebean f:validateregex f:validaterequired Opis Deleguje walidację lokalnych wartości Bean Validation API Używa wzorca atrybutu do walidacji komponentu. Wejściowy wzorzec odpowiada wartości łańcuchowej komponentu. Jeśli wartości są zgodne, walidacja przebiega poprawnie. Sprawdza obecność wartości atrybutu równoważny efekt to ustawienie elementu atrybutu komponenetu na wartość true. 9

Procedura tworzenia i wykorzystanie komponentu złożonego: 1. Wykonanie folderu resource w katalogu głównym Web Pages projektu i zagnieżdżonego folderu, gdzie będą umieszczane pliki z definicją komponentu złożonego. 2. Wykonanie pliku xhtml typu JSF Page w zagnieżdżonym w folderze resources i zadeklarowanie przestrzeni nazw komponentu złożonego 3. Wykorzystanie znaczników composite:interface, composite:attribute i composite:implementation, do zdefiniowania zawartości komponentu złożonego. 4. Znacznik composite:interface są używany do deklaracji wartości konfiguracyjnych. Znacznik composite:implementation jest używany do deklaracji znaczników XHTML. Wykorzystuje on atrybuty znacznika composite:interface za pomocą wyrażenia: #{cc.attrs.attributename}. 10

Procedura tworzenia i wykorzystanie komponentu złożonego (cd): 5. W celu użycia komponentu kompozytowego należy wykonać kolejny plik typu xhtml i w przestrzeni nazw strony umieścić wyrażenie reprezentujące miejsce definicji komponentu złożonego np http://java.sun.com/jsf/nazwa_folderu, gdzie nazwa_folder jest nazwą folderu wykonanego w folderze resources (p. 1), 6. Zastosowanie zdefiniowanego komponentu złożonego, podobnie jak komponenty JSF 11

Przykład 1 komponenty kompozytowe Definicje komponentów złożonych Wykorzystanie komponentów złożonych do definicji stron 12

13

14

Definicja komponentu złożonego - register (1) <?xml version="1.0" encoding="utf-8"?> <!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:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:composite="http://xmlns.jcp.org/jsf/composite"> <composite:interface > <composite:attribute name="namelable" /> <composite:attribute name="namevalue" /> <composite:attribute name="emaillable" /> <composite:attribute name="emailvalue" /> <composite:attribute name="registerbuttontext" /> <composite:attribute name="showbuttontext" /> <composite:attribute name="messagename" /> <composite:attribute name="messageemail" /> <composite:attribute name="registerbuttonaction" methodsignature="java.lang.string action()" /> </composite:interface> 15

Definicja komponentu złożonego - register (2) <composite:implementation > <h:form> <h:panelgroup id="messagepanel" layout="block" > <h:messages errorstyle="color: red" infostyle="color: green"/> </h:panelgroup> <h:panelgrid columns="2" id="textpanel"> #{cc.attrs.namelable} : <h:inputtext id="name" value="#{cc.attrs.namevalue}" size="30" required="true" requiredmessage="#{cc.attrs.messagename}" /> #{cc.attrs.emaillable} : <h:inputtext id="email" value="#{cc.attrs.emailvalue}" size="30" required="true" requiredmessage="#{cc.attrs.messageemail}"/> </h:panelgrid> <h:commandbutton action="#{cc.attrs.registerbuttonaction}" value="#{cc.attrs.registerbuttontext}"/> </h:form> </composite:implementation> </html> 16

Definicja komponentu złożonego - show (1) <?xml version='1.0' encoding='utf-8'?> <!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:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:composite="http://xmlns.jcp.org/jsf/composite"> <composite:interface> <composite:attribute name="namelable" /> <composite:attribute name="namevalue1" /> <composite:attribute name="emaillable" /> <composite:attribute name="emailvalue1" /> <composite:attribute name="showbuttontext" /> <composite:attribute name="showbuttonaction" method-signature="java.lang.string action()" /> </composite:interface> 17

Definicja komponentu złożonego - show (2) <composite:implementation > <h:form> <h:panelgrid columns="2" id="textpanel"> #{cc.attrs.namelable} : <h:outputtext id="name" value="#{cc.attrs.namevalue1}" /> #{cc.attrs.emaillable} : <h:outputtext id="email" value="#{cc.attrs.emailvalue1}" /> </h:panelgrid> <h:commandbutton action="#{cc.attrs.showbuttonaction}" value="#{cc.attrs.showbuttontext}"/> </h:form> </composite:implementation> </html> 18

Definicja strony - demo <?xml version="1.0" encoding="utf-8"?> <!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:h="http://xmlns.jcp.org/jsf/html" xmlns:java2s="http://xmlns.jcp.org/jsf/composite/java2s" > <h:body> <java2s:register namelable="name" namevalue="#{user.name}" emaillable="e-mail" emailvalue="#{user.email}" messagename="brak nazwy" messageemail="brak email" registerbuttontext="register" registerbuttonaction="#{user.registeraction}" /> </h:body> </html> 19

Definicja strony - result <?xml version="1.0" encoding="utf-8"?> <!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:h="http://xmlns.jcp.org/jsf/html" xmlns:java2s="http://xmlns.jcp.org/jsf/composite/java2s"> <h:body> <h1>composite Components in JSF 2.2</h1> <java2s:show namelable="name" namevalue1="#{user.name}" emaillable="e-mail" emailvalue1="#{user.email}" showbuttontext="return" showbuttonaction="#{user.registeraction1}"/> </h:body> </html> 20

Komponent typu Managed Bean package com.java2s.common; import javax.faces.bean.managedbean; import javax.faces.bean.sessionscoped; @ManagedBean(name="user") @SessionScoped public class UserBean{ public String name; public String email; } public String getname() { return name; } public void setname(string name) { this.name = name; } public String getemail() { return email; } public void setemail(string email) { this.email = email; } public String registeraction() { return "result"; } public String registeraction1() { return "demo"; } 21

Przykład 2 Sklep3 Definicje komponentów złożonych Wykorzystanie komponentów złożonych do definicji stron 22

<?xml version='1.0' encoding='utf-8'?> Dodawanie_produktu <!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:h="http://xmlns.jcp.org/jsf/html" xmlns:composite="http://xmlns.jcp.org/jsf/composite"> <composite:interface > <composite:attribute name="namelable" /> <composite:attribute name="namevalue" /> <composite:attribute name="titlename" /> <composite:attribute name="namemessage" /> <composite:attribute name="cenalable" /> <composite:attribute name="cenavalue" /> <composite:attribute name="titlecena" /> <composite:attribute name="cenamessage" /> <composite:attribute name="promocjalable" /> <composite:attribute name="promocjavalue" /> <composite:attribute name="titlepromocja" /> <composite:attribute name="promocjamessage" /> <composite:attribute name="dodajbuttontext" /> <composite:attribute name="dodajbuttonaction" method-signature="java.lang.string action()" /> </composite:interface> 23

<composite:implementation > <h:form> Dodawanie_produktu.xhtml <h:panelgrid columns="2" id="textpanel"> #{cc.attrs.namelable} : <h:inputtext id="name" value="#{cc.attrs.namevalue}" title="#{cc.attrs.titlename}" required="true" requiredmessage="#{cc.attrs.namemessage}"/> #{cc.attrs.cenalable} : <h:inputtext id="cena" value="#{cc.attrs.cenavalue}" title="#{cc.attrs.titlecena}" required="true" requiredmessage="#{cc.attrs.cenamessage}"/> #{cc.attrs.promocjalable} : <h:inputtext id="promocja" value="#{cc.attrs.promocjavalue}" </h:panelgrid> title="#{cc.attrs.titlepromocja}" required="true" requiredmessage="#{cc.attrs.promocjamessage}"/> <h:commandbutton action="#{cc.attrs.dodajbuttonaction}" </h:form> value="#{cc.attrs.dodajbuttontext}"/> </composite:implementation> </html> 24

Dodaj_produkt2.xhtml <?xml version='1.0' encoding='utf-8'?> <!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://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:komponenty_zlozone="http://xmlns.jcp.org/jsf/composite/ komponenty_zlozone"> <body> <ui:composition template="./../template.xhtml"> <ui:define name="title"> Dodaj produkt </ui:define> <ui:define name="content"> <komponenty_zlozone:dodawanie_produktu namelable="podaj nazwe produktu" namevalue="#{managed_produkt.nazwa}" titlename="podaj nazwe:" namemessage="blad: Podaj nazwe." 25

Dodaj_produkt2.xhtml cenalable="podaj cene netto produktu" cenavalue="#{managed_produkt.cena}" titlecena="podaj cene:" cenamessage="blad: Podaj cene." promocjalable="podaj promocje produktu" promocjavalue="#{managed_produkt.promocja}" titlepromocja="podaj promocje:" promocjamessage="blad: Podaj promocje." dodajbuttontext="ok" dodajbuttonaction="#{managed_produkt.dodaj_produkt}" /> </ui:define> </ui:composition> </body> </html> 26

<?xml version='1.0' encoding='utf-8'?> Wyswietlanie_produktu.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:h="http://xmlns.jcp.org/jsf/html" xmlns:composite="http://xmlns.jcp.org/jsf/composite"> <composite:interface> <composite:attribute name="namelable" /> <composite:attribute name="namevalue" /> <composite:attribute name="cenalable" /> <composite:attribute name="cenavalue" /> <composite:attribute name="promocjalable" /> <composite:attribute name="promocjavalue" /> <composite:attribute name="cena_bruttolable" /> <composite:attribute name="cena_bruttovalue" /> <composite:attribute name="pokazbuttontext" /> <composite:attribute name="pokazbuttonaction" method-signature="java.lang.string action()"/> <composite:attribute name="brak"/> <composite:attribute name="brakdanych"/> <composite:attribute name="standanych1"/> <composite:attribute name="standanych2"/> </composite:interface> 27

Wyswietlanie_produktu.xhtml <composite:implementation > <h:form> <h:outputtext escape="#{cc.attrs.brak}" value="#{cc.attrs.brakdanych}" rendered="#{cc.attrs.standanych1}"/> <h:panelgrid columns="2" rendered="#{cc.attrs.standanych2}"> #{cc.attrs.namelable} : <h:outputtext id="name" value="#{cc.attrs.namevalue}" /> #{cc.attrs.cenalable} : <h:outputtext id="cena" value="#{cc.attrs.cenavalue}" /> #{cc.attrs.promocjalable} : <h:outputtext id="promocja" value="#{cc.attrs.promocjavalue}" /> #{cc.attrs.cena_bruttolable} : <h:outputtext id="cena_brutto" value="#{cc.attrs.cena_bruttovalue}" /> </h:panelgrid> <h:commandbutton action="#{cc.attrs.pokazbuttonaction}" value="#{cc.attrs.pokazbuttontext}"/> </h:form> </composite:implementation> </html> 28

<?xml version='1.0' encoding='utf-8'?> Rezultat2.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" <body> xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:komponenty_zlozone="http://xmlns.jcp.org/jsf/ <ui:composition template="./../template.xhtml"> <ui:define name="title"> Rezultat <ui:define name="content"> composite/komponenty_zlozone"> </ui:define> <komponenty_zlozone:wyswietlanie_produktu brak="false" brakdanych="taki produkt juz istnieje" standanych1="#{managed_produkt.stan==0}" standanych2="#{managed_produkt.stan!=0}" 29

Rezultat2.xhtml namelable="nazwa produktu" namevalue="#{managed_produkt.nazwa}" cenalable="cena produktu" cenavalue="#{managed_produkt.cena}" promocjalable="promocja produktu" promocjavalue="#{managed_produkt.promocja}" cena_bruttolable="cena brutto produktu" cena_bruttovalue="#{managed_produkt.cena_brutto}" pokazbuttontext="powrot" pokazbuttonaction="#{managed_produkt.powrot}" /> </ui:define> </ui:composition> </body> </html> public String powrot() { return "/faces/index1"; } 30

31

32

33