X33EJA. JSF aplikace

Podobné dokumenty
X33EJA. JSF aplikace

JavaServer Faces Zdeněk Troníček

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

Web Frameworks Java Server Faces. Petr Aubrecht CA

KIV/PIA 2013 Jan Tichava

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

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

Web Services na SOAP

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

Tvorba informačních systémů

Tvorba informačních systémů

X33EJA Enterprise Java

Tvorba informačních systémů

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Spring framework 2.0. Roman Pichlík CZJUG

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

UJO Framework. revoluční architektura beans. verze

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

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

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

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

Programátorská příručka

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

KIV/PIA Semestrální práce

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Uživatelská příručka

(Enterprise) JavaBeans. Lekce 7

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

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Stručný úvod pro programátory. Michal Kuchta

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

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

Tvorba informačních systémů

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

MS SQL Server 2008 Management Studio Tutoriál

Použití inteligentních značek s informačními službami

eretail.cz MANUÁL PRO PARTNERY

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

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

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 9

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

Mobilní aplikace. Uživatelský manuál

Uživatelský modul. File Uploader

APS Administrator.OP

Synchronizace kontaktů z ESO9 do MS Outlook

Snadná úprava stránek, nemusím umět HTML, tvořím obsah téměř jako ve Wordu. Jak změnit obsah nástěnky: vpravo nahoře Nastavení zobrazených informací

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

WNC::WebNucleatCreator

Co je nového v Java EE 6

Softwarové komponenty a Internet

Příloha 6. Palety nástrojů

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

NAS 323 NAS jako VPN Server

Kurz Databáze. Obsah. Návrh databáze E-R model. Datová analýza, tabulky a vazby. Doc. Ing. Radim Farana, CSc.

Mobilní aplikace. Uživatelský manuál

Novinky verze systému Spisové služby (SpS) e-spis LITE

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

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

Enterprise Java Beans 3.0

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

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Technologie Java. Jaroslav Žáček

SEMESTRÁLNÍ PRÁCE. z předmětu KIV/DB1

Sklady. Níže popsaný návod je určen pro uživatele s rolí Administrátor nebo Správce skladu. Přehled funkcí 2. Postup pro vytvoření nového skladu 2

APS Administrator.ST

Uživatelská příručka Autor: Martin Fiala

Elektronická podpora výuky předmětu Komprese dat

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

TIA Selection Tool manuál pro použití

Java a Caché IV: Manipulace s objekty

Modul IRZ návod k použití

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Platformy / technologie. Jaroslav Žáček

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Uživatelský modul. wm-bus Concentrator

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Lokality a uživatelé

Technologie JavaBeans

Outdoor Expert. Uživatelský manuál. Verze aplikace: OutdoorExpert_Manual.docx 1 /

Vazba ESO9 na MS Outlook a MS Exchange

Obrázek 1: Struktura programu z hlediska zapojení

Komponenta Human Task v Oracle SOA Suite

Versiondog Lukáš Rejfek, Pantek (CS) s.r.o. 7/2014

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

Popis programu: Popis přípon důležitých souborů: *.qpf projektový soubor Quartusu

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

PA165: Úvod do Java EE. Petr Adámek

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

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

Object-relational mapping (JPA, Hibernate)

Evidence požadavků uživatelů bytů a nebytových prostor

Provozní dokumentace. Seznam orgánů veřejné moci. Příručka pro běžného uživatele

SG at CTU. 3sg.czacm.org. Cerny T., Chalupa V., Rychtecky L., Linhart T.

1 Tabulky Příklad 3 Access 2010

Databázové systémy Cvičení 5.2

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

Transkript:

JSF aplikace Součástí webové aplikace samostatné nebo jako modul Enterprise app. Projekt musí obsahovat JSF knihovny Nastavení se provádí v konfiguračních souborech 'web.xml', 'sun-web.xml' (závislé na aplikačním serveru) 'faces-config.xml' uložené ve Web/WEB-INF v NetBeans přístupné také v Configuration Files 1

Konfigurace 'web.xml' Nastavení webové aplikace (obdoba 'ejb-jar.xml') <?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>com.sun.faces.verifyobjects</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>com.sun.faces.validatexml</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.state_saving_method</param-name> <param-value>client</param-value> </context-param> <servlet> <servlet-name>faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.facesservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/welcomejsf.jsp</welcome-file> </welcome-file-list> </web-app> při deploy na server jsou vytvářeny objekty (komponenty, validátory, renderery apod.) při deploy na server jsou xml soubory validovány ukládání stavu client server kladné číslo pořadí v jakém se má servlet loadovat JSF servlet bude zpracovávat stránky s URL '/faces/' - tzv. prefixové mapování, nebo s nějakou příponou '*.jsf' nebo '.faces' apod. Doba platnosti session v minutách (0 nebo záporné hodnoty platnost nekončí) Úvodní stránka 2

Konfigurace 'faces-config.xml' <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <navigation-rule> <from-view-id>/students.jsp</from-view-id> <navigation-case> <from-outcome>edit-student</from-outcome> <to-view-id>/student-edit.jsp</to-view-id> <redirect /> </navigation-case> <navigation-case> <from-outcome>edit-teacher</from-outcome> <to-view-id>/teacher-edit.jsp</to-view-id> <redirect /> </navigation-case> </navigation-rule> </navigation-rule> Navigační string (návratová hodnota z metody definované v action) Při přesměrování změnit URL Edit-teacher není v aplikaci využit, jedná se o příklad řetězení navigation-case </faces-config> 3

Tvorba aplikace - přehled 1) Struktura aplikace, model, business metody využívající model 2) Webový projekt, backing beans třídy spolupracující s uživatelským rozhraním (zpracovávají vstupy a výstupy) 3) Registrace tříd do konfiguračního souboru 4) Zobrazení JSP stránky, používající JSF komponety 5) Vytvoření navigace 6) Validace 7) Internacionalizace 4

Základ aplikace Založit nový enterprise projekt File New Project kategorie Java EE Enterprise Application 'x33eja-jsf' pouze s modulem WEB EJB modul otevřít EJB projekt z předchozího cvičení k enterprise projektu přidat daný EJB modul: kontextové menu (KM) na Java EE Modules enterprise projektu Add Java EE Module zkontrolovat připojení do databáze Persistence Unit resp. 'sun-resources.xml' (ve složce Server Resources) Username: jpa, password: test, database: jpa_example 5

Webový modul konfigurace Přidat JavaServer Faces framework (ve vlastnostech webového projektu v kategorii Frameworks) ponechat výchozí Servlet URL Pattern např. '/faces/*' ponechat zaškrtnuté Validate XML záložka Libraries nastavit JSF 1.2 Projít konfigurační soubory (Slide 2, 3), poté nastavit <servlet-mapping> <servlet-name>faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> Přejmenovat 'welcomejsf.jsp' na 'students.jsp' Do 'index.jsp' přidat přesměrování <jsp:forward page="students.jsf" /> 6

Backing bean #1 Vytvořit klasickou třídu 'StudentsBack.java' Registrace ve 'faces-config.xml' pod jménem 'students': zobrazit XML, KM Java Server Faces Add Managed Bean <managed-bean> <managed-bean-name>students</managed-bean-name> <managed-bean-class>cz.cvut.x33eja.back.studentsback</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> Totéž lze File New File Categories JSF JSF Managed Bean Přidat EJB projekt jako knihovnu webového modulu 7

Backing bean #2 KM Insert Code Call Enterprise Bean vybrat z EJB projektu StudentSessionBean @EJB StudentSessionLocal ssl; public List<Student> getallstudents() { return ssl.getallstudents(); Ke každé datové položce třídy vygenerovat getter a setter (má-li být možnost nastavovat hodnoty pomocí Insert Code nebo Refactor Encapsulate Fields) př. Student student = null; Přístup k jiné backing bean (v příkladu nepoužito) StudentsBack sb = (StudentsBack)FacesContext.getCurrentInstance().getApplication().GetELResolver().getValue(context.getELContext(), null, "students"); 8

Zobrazení dat #1 Zobrazení dat v 'students.jsp' z palety JSF (není-li zobrazena Window - Palette) komponentu JSF Data Table Zvolit 'Table Generated from Entity Class' Browse, zadat 'Student' a zvolit odpovídající entitu z balíčku 'x33eja.model.student', použít registrovanou backing bean 'students' automaticky se vygeneruje tabulka <h:datatable> atribut var s hodnotou 'item' se odkazuje na jednotlivé property dané entity Do atribut value vložit '#{students.allstudents' (pokud je backing bean správně zaregistrovaná objeví se v Code completion po napsání #{ ) U sloupce Supervisor zobrazovat jeho jméno a příjmení (nikoli výstup tostring) 9

Zobrazení dat #2 Přidat nad tabulku tlačítků 'New Student' a do tabulky sloupec s tlačítkem 'Edit' V backing bean vytvořit metody 'newstudent' a 'editstudent' s návratovým typem String public String newstudent() { student = new Student(); return "edit-student"; Vytvořit stránku 'student.jsp' pro úpravu ůdajů studenta, komponenty <h:form>, <h:panelgrid>, <h:outputtext>, <h:inputtext required= true >, <h:commandbutton> <h:messages /> - doporučuji pro ladění umístit na každé stránce, kde se upravují data pro zobrazení možných chyb Umožnit navigaci zpět na seznam studentů (h:commandlink) 10

Navigace 'faces-config.xml': Tvorba pravidel vizuálně nebo v XML KM - JSF Add Navigation Rule: from view ID: '/*' KM - JSF Add Navigation Case: 'edit-student' Po vytvoření pravidel provést deploy navigace bude fungovat, nicméně zvolený detail se nebude zobrazovat chybí provázání na konkrétní záznam <navigation-rule> <from-view-id>/*</from-view-id> <navigation-case> <from-outcome>edit-student</from-outcome> <to-view-id>/student.jsp</to-view-id> <redirect /> </navigation-case> <navigation-case> <from-outcome>list-students</from-outcome> <to-view-id>/students.jsp</to-view-id> <redirect /> </navigation-case> </navigation-rule> Navigace je platná pro všechny stránky Návratová hodnota z metody definované v action Při přesměrování změnit URL 11

DataModel Vytvořit DataModel a nastavit jej jako value do students.jsp (místo listu) public DataModel getallstudentsmodel() { allstudentsmodel = new ListDataModel(getAllStudents()); return allstudentsmodel; Tlačítko edit (h:commandbutton) volá akci: public String editstudent() { student = (Student) allstudentsmodel.getrowdata(); return "edit-student"; Pokud bychom nechtěli používat DataModel, je možné místo h:commandbutton použít h:commandlink s vloženým parametrem pomocí: <f:param name= id value= 111 />. Toto řešení pro semestrální práci nedoporučujeme. 12

Komponenta selectonelistbox Přidání supervizora Backing Bean: public List<SelectItem> getallteachersselectlist() { List<SelectItem> items = new ArrayList<SelectItem>(); for (Teacher t : ssl.getallteachers()) { items.add(new SelectItem(t, t.getsurname() + " " + t.getfirstname())); return items; JSP: <h:selectonelistbox value="#{students.student.hassupervisor" size="1"> <f:selectitems value="#{students.allteachersselectlist" /> </h:selectonelistbox> 13

JSF - konvertor Conversion Error setting value 'x33eja.model.teacher@475b7d' for 'null Converter' nepovedla se automatická konverze (String, Integer apod.) public class TeacherConverter implements Converter { public Object getasobject(facescontext context, UIComponent component, String value){ return lookupstudentsessionbean().getteacherwithid(value); public String getasstring(facescontext context, UIComponent component, Object value){ return String.valueOf(((Teacher)value).getBirthNumber()); Registrace konvertoru ve faces-config.xml <converter> <converter-id>teacherconverter</converter-id> <converter-class>cz.cvut.x33eja.util.teacherconverter</converter-class> </converter> JSF <h:selectonelistbox value="#{students.student.hassupervisor" size="1"> <f:selectitems value="#{students.allteachersselectlist" /> <f:converter converterid="teacherconverter" /> </h:selectonelistbox> 14

JSF - validace Atribut required nenulová hodnota vstupu f:validatelength Definice vlastního validátoru: Java: public class BirthdateValidator implements Validator { public void validate(facescontext context, UIComponent component, Object value) throws ValidatorException { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Too long number", null)); faces-config.xml: <validator> <validator-id>birthdatevalidator</validator-id> <validator-class>cz.cvut.x33eja.util.birthdatevalidator</validator-class> </validator> JSF: <h:inputtext id="birth" value="#{students.student.birthnumber" required="true" disabled="#{!(students.student.birthnumber==0)"> <f:validator validatorid="birthdatevalidator"/> </h:inputtext> <h:message for="birth" /> 15

JSF - lokalizace File New category Other Properties File Translation KM Add Locale cs_cz students=students student_add=add Student student_edit=edit faces-config.xml <application> <locale-config> <default-locale>en</default-locale> <supported-locale>cs</supported-locale> </locale-config> <resource-bundle> <base-name>translation</base-name> <var>msgs</var> </resource-bundle> </application> JSP Použití: <h:outputtext value="#{msgs.students"/> Nebo: <f:loadbundle basename="translation" var="msgs" /> - nefunguje doplňování kódu 16

Přehled možných výjimek #1 'org.apache.jasper.jasperexception: java.lang.runtimeexception: Cannot find FacesContext' ve web.xml servlet mapping Faces Servlet zkontrolovat url-pattern: Pro: '/faces/*' nutné jej také zadat do URL např. 'aplikacewar/welcomejsf.jsp' nahradit: 'aplikace-war/faces/welcomejsf.jsp' Pro '*.jsf' místo 'aplikace-war/welcomejsf.jsp' nastavit 'aplikacewar/welcomejsf.jsf' 'j_id_id47: Validation Error: Value is not valid' h:selectonelistbox (ID konkrétní komponenty lze zjistit např. pomocí pluginu FireBug kliknutím na daný element stránky) Chyba se zobrazí, je-li na stránce komponenta h:messages Pro danou entitu implementovat equals viz entita Person (KM v dané entitě - Insert Code Equals a zvolit např. primární klíč) 17

Přehled možných výjimek #2 'java.io.notserializableexception: x33eja.model....' - implementovat pro entity rozhraní Serializable 18