JavaServer Faces Zdeněk Troníček



Podobné dokumenty
Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

KIV/PIA 2013 Jan Tichava

X33EJA. JSF aplikace

Web Frameworks Java Server Faces. Petr Aubrecht CA

X33EJA. JSF aplikace

Fakulta elektrotechnická. Bc. Petr Halaška. Studijní program: Elektrotechnika a informatika, strukturovaný, Navazující magisterský

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Oddělení webového a aplikačního serveru. Běží zde několik aplikací.

Personální IS nemocnice v ƒeské Líp. Petr Va²ák. ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická. Diplomová práce

Tvorba informačních systémů

Navrhněte a implementujte webový portál pro milovníky čokolády. Proveďte analýzu současných řešení a zdůvodněte návrh vlastního řešení.

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

Tvorba informačních systémů

Tvorba informačních systémů

Tvorba informačních systémů

KIV/PIA Semestrální práce

Systém pro odevzdávání studentských prací. Bc. Radek Malinský

Java Server-side. Štěpán Kuchař. VŠB-TUO FEI Katedra informatiky

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Tvorba informačních systémů

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Tvorba informačních systémů

Tvorba informačních systémů

Distribuované systémy a výpočty

Michal Krátký, Miroslav Beneš

Převod LN aplikace do xpages

Spring framework 2.0. Roman Pichlík CZJUG

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

<Insert Picture Here> Vývoj portálových řešení v Javě

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Spring portfolio. Tomáš Krátký

Čipové karty Lekařská informatika

Základy programování v jazyce JAVA

Technologie Java. Jaroslav Žáček

UJO Framework. revoluční architektura beans. verze

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Co je nového v Java EE 6

Michal Augustýn Microsoft Most Valuable Professional

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

WEBOVÉ APLIKAČNÍ RÁMCE

Technologie JavaBeans

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Abstraktní datové typy: zásobník

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

RMI Remote Method Invocation

X33EJA Enterprise Java

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

RMI - Distribuované objekty v Javě

Web Services na SOAP

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

JAVA JavaBeans Java, letní semestr

Java Managenent Extension JMX

Java a XML. 10/26/09 1/7 Java a XML

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Java technologie pro webové aplikace

Návrh sociální sítě se sportovní tématikou s využitím technologií Java Enterprise Edition

Car Agent. Struktura chování:

JAVA. Aspekty (AOP) AspectJ

Programování v Javě I. Únor 2009

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

Jakub Čermák Microsoft Student Partner

Programování v Javě I. Leden 2008

Microsoft ASP.NET 2.0/3.0 (advanced)

JEE. Webové aplikace Servlety, JSP, JSF

Iterator & for cyklus

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

X36WWW. Technologie aplikačních serverů. Miroslav Bureš,, Martin Klíma. X36WWW: 12. přednáška 1

Transaction API + webové frameworky + další poznámky. Petr Aubrecht CA

JAVA JavaBeans Java, letní semestr 2018

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Typický prvek kolekce pro české řazení

Uspořádaný seznam nula nebo více elementů, každý je typem ASN.1 (heterogenní seznam) uspořádaný seznam stejných elementů

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální

Enterprise Java Beans 3.0

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

Možnosti návrhu webových aplikací. Lukáš Gemela, A11N0101P

Platformy / technologie. Jaroslav Žáček

Návrhové vzory pro J2EE. Miroslav Beneš

Softwarové komponenty a Internet

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

PREPROCESOR POKRAČOVÁNÍ

Návrhové vzory pro J2EE

Multiplatformní osobní organizér v jazyce Java

Podpora aplikační logiky v J2EE aplikačních rámcích

Transkript:

JavaServer Faces Zdeněk k Troníček

JSF aplikace Faces servlet web.xml faces-config.xml JSF (*.jsp) Backing Beans (*.java) model (*.java) libraries <%@taglib prefix="f" uri="..." %> <%@taglib prefix="h" uri="..." %> <html> <head>...</head> <body> <f:view> Hi, <h:outputtext value="#{user.name}"/> </f:view> </body> </html> expression language: #{...} 27.5.2009 CZJUG: JavaServer Faces 2

Requests initial request postback request <%@taglib prefix="f" uri="..." %> <%@taglib prefix="h" uri="..." %> <html> <head>...</head> <body> <f:view> <h:form> <h:inputtext value="#{user.name}"/> <h:commandbutton value="send" action="#{user.store}"/> <h:form> </f:view> </body> </html> 27.5.2009 CZJUG: JavaServer Faces 3

Backing Bean public class UserBean { private String name; private int age; //public UserBean() { } public String getname() { return user; } public void setname( String name ) { this.name = name; } public int getage() { return age; } public void setage( int age ) { this.age = age; } } <h:outputtext value="#{user.name}"/> initial response: getter postback response: getter <h:inputtext value="#{user.age}"/> initial response: getter postback request: setter postback response: getter 27.5.2009 CZJUG: JavaServer Faces 4

Příklad <%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %> <html> <head>...</head> <body> <f:view> <h:form> <h:inputtext value="#{user.name}"/> <h:commandbutton value="send" action="#{user.store}"/> </h:form> </f:view> </body> </html> Initial: 1. UserBean.getName() Postback: 2. UserBean.setName() 3. UserBean.store() 4. UserBean.getName() 27.5.2009 CZJUG: JavaServer Faces 5

Managed Bean (faces-config.xml config.xml) <faces-config>... <managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class> x36tjv.userbean </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>... </faces-config> scope request session application none 27.5.2009 CZJUG: JavaServer Faces 6

Navigace (faces-config.xml config.xml) <faces-config> <navigation-rule> <from-view-id>/first.jsp</from-view-id> <navigation-case> <from-outcome>next</from-outcome> <to-view-id>/second.jsp</to-view-id> </navigation-case> </navigation-rule>... </faces-config> first.jsp "next" second.jsp statická navigace: <h:commandbutton value="send" action="next"/> 27.5.2009 CZJUG: JavaServer Faces 7

Dynamická navigace <h:commandbutton value="send" action="#{user.store}"/> public class UserBean { public String store() { if ( ) { return "home"; } return "next"; } } "next" second.jsp first.jsp "home" home.jsp 27.5.2009 CZJUG: JavaServer Faces 8

Konverze řetězec javovský objekt <h:inputtext value="#{dvd.year}" required="true"> <f:convertdatetime pattern="yyyy"/> </h:inputtext> BigDecimalConverter BigIntegerConverter BooleanConverter ByteConverter CharacterConverter DateTimeConverter DoubleConverter EnumConverter FloatConverter IntegerConverter LongConverter NumberConverter ShortConverter 27.5.2009 CZJUG: JavaServer Faces 9

Konvertor class PhoneConverter implements Converter { public Object getasobject( FacesContext fc, UIComponent comp, String value ) { // String Object (ConverterException) } public String getasstring( FacesContext fc, UIComponent comp, Object value ) { // Object String (ConverterException) } } faces-config.xml <converter> <converter-for-class>x36tjv.phone</converter-for-class> <converter-class>x36tjv.phoneconverter</converter-class> </converter> 27.5.2009 CZJUG: JavaServer Faces 10

Validace form data validation business-logic validation <h:inputtext value="#{app.length}"> <f:validatedoublerange minimum="0" maximum="100"/> </h:inputtext> DoubleRangeValidator LongRangeValidator LengthValidator délka řetězce 27.5.2009 CZJUG: JavaServer Faces 11

Validátor class PhoneValidator implements Validator { public void validate( FacesContext fc, UIComponent comp, Object value ) throws ValidatorException {... } } faces-config.xml <validator> <validator-id>phonevalidator</validator-id> <validator-class>x36tjv.phonevalidator</validator-class> </validator> JSP <h:inputtext value="#{user.phone}"> <f:validator validatorid="phonevalidator"/> </h:inputtext> 27.5.2009 CZJUG: JavaServer Faces 12

Lokalizace JSP <f:view> <f:loadbundle basename="messages" var="msg"/> <h:outputtext value="#{msg.appname}"/> </f:view> messages_en.properties appname=dvd Library messages_cs.properties appname=knihovna DVD faces-config.xml <application> <locale-config> <default-locale>en</default-locale> <supported-locale>cs</supported-locale> </locale-config> <message-bundle>messages</message-bundle> </application> 27.5.2009 CZJUG: JavaServer Faces 13

Component Tree Client side Welcome to JSF! Server side UIViewRoot <f:view> HtmlOutputText <h:outputtext> HtmlForm <h:form> HtmlInputText <h:inputtext> find HtmlCommandButton <h:commandbutton> 27.5.2009 CZJUG: JavaServer Faces 14

Request Life Cycle postavení stromu Restore View vyčtení parametrů Apply Request Values konverze a validace Process Validations Render Response vytvoření odpovědi Invoke Application akce a navigace Update Model Values uložení hodnot 27.5.2009 CZJUG: JavaServer Faces 15

Initial Request postavení stromu Restore View vyčtení parametrů Apply Request Values konverze a validace Process Validations Render Response vytvoření odpovědi Invoke Application akce a navigace Update Model Values uložení hodnot 27.5.2009 CZJUG: JavaServer Faces 16

Postback Request postavení stromu Restore View vyčtení parametrů Apply Request Values konverze a validace Process Validations Render Response vytvoření odpovědi Invoke Application akce a navigace Update Model Values uložení hodnot 27.5.2009 CZJUG: JavaServer Faces 17

Events postavení stromu vyčtení parametrů konverze a validace Restore View Apply Request Values Process Events Process Validations Process Events Conversion/validation error Render Response Process Events Invoke Application Process Events Update Model Values vytvoření odpovědi akce a navigace uložení hodnot 27.5.2009 CZJUG: JavaServer Faces 18

Process Validations <h:inputtext value="#{user.phone}"> <f:converter converterid="phoneconverter"/> <f:validator validatorid="phonevalidator"/> </h:inputtext> <h:inputtext value="#{addr.zipcode}"> <f:converter converterid="zipcodeconverter"/> <f:validator validatorid="zipcodevalidator"/> </h:inputtext> <h:messages/> FacesContext: addmessage() PhoneConverter: getasobject() ok PhoneValidator: validate() ok ZipCodeConverter: getasobject() ok ZipCodeValidator: validate() ok error error 27.5.2009 CZJUG: JavaServer Faces 19

Render Response StateHolder Zahrnuje: vytvoření odpovědi uložení stavu komponent Object savestate( FacesContext fc ) void restorestate( FacesContext fc, Object state ) web.xml <context-param> <param-name> javax.faces.state_saving_method </param-name> <param-value>client</param-value> </context-param> 27.5.2009 CZJUG: JavaServer Faces 20

Render Response (2) Invoke Application Invoke Application initial request Render Response Render Response navigace nový strom komponent bez navigace původní strom komponent 27.5.2009 CZJUG: JavaServer Faces 21

Property immediate <h:commandlink immediate="true" /> <h:commandbutton immediate="true" /> ActionSource ActionEvent Restore View Apply Request Values doručena ActionEvent ActionListener DefaultActionListener Render Response 1. akce 2. navigace 27.5.2009 CZJUG: JavaServer Faces 22

Property immediate (2) <h:inputtext immediate="true" /> <h:selectbooleancheckbox immediate="true" /> Restore View konverze validace Apply Request Values EditableValueHolder: UIInput UISelectBoolean UISelectOne UISelectMany Process Validations 27.5.2009 CZJUG: JavaServer Faces 23

Tag JSF komponenty inputtext, selectonelistbox, selectonemenu, selectoneradio, selectmanylistbox,... UIComponent UIInput, UISelectOne, UISelectMany,... Renderer Text, Secret, Listbox,, Menu, Radio,... Renderer Př.: UIInput + Text = inputtext UISelectOne + Listbox = selectonelistbox 27.5.2009 CZJUG: JavaServer Faces 24

Q&A Děkuji za pozornost