X33EJA. JSF aplikace



Podobné dokumenty
X33EJA. JSF aplikace

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

JavaServer Faces Zdeněk Troníček

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

Tvorba informačních systémů

Tvorba informačních systémů

Programátorská příručka

Web Services na SOAP

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

UJO Framework. revoluční architektura beans. verze

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

HTML Hypertext Markup Language

Tvorba informačních systémů

Příloha 6. Palety nástrojů

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

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

(X)HTML, CSS a jquery

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

Mgr. Vlastislav Kučera přednáška č. 2

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

KIV/PIA Semestrální práce

Spring framework 2.0. Roman Pichlík CZJUG

MS SQL Server 2008 Management Studio Tutoriál

X33EJA Enterprise Java

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

HTML - Úvod. Zpracoval: Petr Lasák

FFUK Uživatelský manuál pro administraci webu Obsah

Jak vznikala webová aplikace kolonizace.asp2.cz

(Enterprise) JavaBeans. Lekce 7

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

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.

Mgr. Vlastislav Kučera lekce č. 2

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

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

Vytvoření pokročilé Fotogalerie v Drupalu - Views

Tvorba webu. Úvod a základní principy. Martin Urza

Uživatelská příručka 6.A6. (obr.1.)

Uživatelská příručka

APS Administrator.OP

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Doxygen. Jakub Břečka

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

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

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

Příručka pro editaci kontaktů na eagri

Personální evidence zaměstnanců

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í

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

eretail.cz MANUÁL PRO PARTNERY

Tvorba informačních systémů

Administrace webu Postup při práci

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


Prohlížení a editace externích předmětů

Postupy práce se šablonami IS MPP

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

BALISTICKÝ MĚŘICÍ SYSTÉM

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

43 HTML šablony. Záložka Šablony v systému

Programování v jazyku C# II. 8.kapitola

Rezervační systém Tvorba WWW stránek

1 Tabulky Příklad 3 Access 2010

1. Programování proti rozhraní

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

Manuál pro obsluhu Webových stránek

Microsoft. Access. Nová databáze, návrh tabulky. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Uživatelský manuál aplikace. Dental MAXweb

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

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

Příprava prostředí pro výuku PHP a MySQL

Technologie Java. Jaroslav Žáček

Jak se orientovat ve světě ESTOFANu verze 3.0.3?

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

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 editaci ŽS. Verze 1.

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

Komponenta Human Task v Oracle SOA Suite

47 Mapování přístupnosti

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

Artlingua Translation API

KAPITOLA 10. Implementace mezinárodní podpory a lokalizace. V této kapitole:

Už ivatelska dokumentace

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

Uživatelská příručka pro ředitele škol

1 Filozofie knihy jízd

Sem vložte zadání Vaší práce.

Zvýšení zabezpečení počítače

Návod - katalog. ANTEE s.r.o. - tel.: , fax: , helpdesk: ,

WEBOVÉ STRÁNKY

WNC::WebNucleatCreator

Návod - katalog. ANTEE s.r.o. - tel.: , fax: , helpdesk: ,

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

ANALYSIS SERVICES PROJEKT VYTVOŘENÍ PROJEKTU A DATOVÉ KOSTKY

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

Uživatelský modul. File Uploader

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' nebo 'glassfish-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

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) Zobrazení JSF komponety 4) Vytvoření navigace 5) Validace 6) Internacionalizace 7) Šablonování 2

Základ aplikace #1 Otevřít enterprise projekt x33eja-jsf (obsahuje EJB modul s datovým modelem a obslužnou logikou) WEB modul File New Project kategorie Java Web Web Application pojmenovat např. X33eja-jsf-war a umístit do složky, ve které se nachází enterprise projekt x33eja-jsf Context path ponechat na: /x33eja-jsf-war (nepoužívat CDI) Přidat framework Java Server Faces Ponechat výchozí knihovnu s JSF 2.0, která je součástí knihoven serveru Podívat se do záložky Configuration na JSF servlet URL Pattern výchozí: /faces/* Preferovaná syntaxe Facelets 3

Základ aplikace #2 Vytvoří se konfigurační soubor 'web.xml' a 'index.xhtml' Dodatečné přidání frameworku JSF KM na webovém modulu Properties v okně Categories zvolit Frameworks a poté vpravo ADD a z dostupných vybrat Java Server Faces K enterprise projektu přidat daný WEB modul: kontextové menu (KM) na Java EE Modules enterprise projektu Add Java EE Module Zkontrolovat připojení do databáze (součástí EJB modulu) Persistence Unit resp. 'sun-resources.xml' (ve složce Server Resources) Username: jpa, password: test, database: jpa_example 4

Konfigurace 'web.xml' <?xml version="1.0" encoding="utf-8"?> <web-app version="3.0" 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_3_0.xsd"> <context-param> <param-name>javax.faces.project_stage</param-name> <param-value>development</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/index.xhtml</welcome-file> </welcome-file-list> </web-app> "Development", "UnitTest", "SystemTest", nebo výchozí "Production" kladné číslo pořadí v jakém se má servlet načítat JSF servlet bude zpracovávat stránky s URL '/faces/' - tzv. prefixové mapování, nebo s nějakou příponou '*.jsf', '*.faces' nebo '*.xhtml' apod. Po kolika minutách neaktivity klienta se má smazat session Úvodní stránka Spustit aplikaci, zadat url '/faces/index.xhtml', 'index.xhtml' a porovnat zdrojový kód, kde je chyba? Nastavit url-pattern na '*.xhtml' a úvodní stránku na 'index.xhtml' (odstranit 'index.jsp', pokud je vytvořen) 5

Backing bean #1 Vytvořit klasickou třídu 'CoursesBean.java' (balíček např. 'x33eja.back') Vytvoření konfiguračního souboru File New kategorie Java Server Faces JSF Faces Configuration 'faces-config.xml' V JSF 1.2 nutná registrace ve 'faces-config.xml' pod jménem 'students': zobrazit XML, KM JSF Add Managed Bean <managed-bean> <managed-bean-name>courses</managed-bean-name> <managed-bean-class>cz.cvut.x33eja.back.coursesbean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> Anotace @javax.faces.bean.managedbean(name="courses") Doba platnosti se řídí anotacemi SessionScoped, RequestScoped, ApplicationScoped, ConversationScoped, ViewScoped, pro kurzy zvolit ApplicationScoped Totéž lze File New File Categories JSF JSF Managed Bean vyplnit jméno a platnost 6

Backing bean #2 KM Insert Code Call Enterprise Bean vybrat z EJB projektu 'SchoolCenter' @EJB SchoolCenterLocal schoolcenter; public List<Course> getallcourses() { return schoolcenter.getallcourses(); 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ř. Course selectedcourse = null; Přístup k jiné backing bean (v příkladu nepoužito) CoursesBean sb = (CoursesBean)FacesContext.getCurrentInstance().getApplication().GetELResolver().getValue(context.getELContext(), null, "courses"); Vytvořit novou SessionScoped bean: 'StudentsBean.java' s metodou getallstudents 7

Zobrazení dat #1 seznam studentů 'index.xhtml' z palety JSF (není-li zobrazena Window - Palette) komponentu JSF Data Table From Entity vybrat entitu 'x33eja.model.student' a zvolit odpovídající entitu z balíčku 'x33eja.model.student', zvolit registrovanou bean 'students' automaticky se vygeneruje tabulka přidat namespace xmlns:f="http://java.sun.com/jsf/core" <h:datatable> atribut var s hodnotou 'item' se odkazuje na jednotlivé property vybrané entity atribut value obsahuje '#{students.allstudents' (pokud je backing bean správně zaregistrovaná objeví se v Code completion po napsání #{ ) 8

Zobrazení dat #2 Upravit název stránky do elementu title a h1 Do jednoho sloupce sloučit jméno a příjmení U sloupce Supervisor zobrazovat jeho jméno a příjmení (nikoli výstup tostring) tzn. '<h:outputtext value="#{item.hassupervisor.firstname #{item.hassupervisor.surname"/>' Zapsané předměty zobrazit jako vloženou data table Přidat nad tabulku tlačítků 'New Student' a do tabulky sloupec s tlačítkem 'Edit' V backing bean 'students' vytvořit metody 'newstudent', 'editstudent(student s)' a 'savestudent' s návratovým typem String private Student student = null; public String newstudent() { student = new Student(); return "student"; public String savestudent() { schoolcenter.updatestudent(student); return "students"; public String editstudent(student st) { this.student = st; return "student"; 9

Zobrazení dat #3 nový student <h:messages /> - doporučuji pro ladění umístit na každé stránce, kde se upravují data pro zobrazení možných chyb v project stage Development jsou sice chyby implicitně zobrazeny, nicméně při změně na Production se bez tohoto atributu nezobrazí Atributem globalonly="true" zajistí, že se nebudou duplikovat do výpisu chyby komponent Provést deploy aplikace: Unable to find matching navigation case with from-view-id '/index.xhtml' for action '#{students.newstudent' with outcome 'student' Vytvořit stránku 'student.xhtml' pro úpravu ůdajů studenta (KM - Web Pages New Other JSF JSF Page Facelets syntax), upravit název stránky a nadpis komponenty <h:form>, <h:panelgrid columns= 3 >, <h:outputtext>, <h:inputtext required= true >, <h:commandbutton type= submit value= Save action= #{students.savestudent > Doplnit atribut ID, komponentu h:message, vyzkoušet a poté přidat atribut Label pro hezký výpis Po nepodařeném Submit formuláře se změní URL řešení? Umožnit navigaci zpět na seznam studentů (h:commandlink) 10

Konfigurace 'faces-config.xml' #1 File New Other- JSF JSF Faces Configuration (ponechat výchozí název i umístění do WEB-INF) Možnost registrovat managed beans, validátory, konvertory Tvorba pravidel vizuálně nebo v XML KM - JSF Insert Navigation Rule: from view ID: '/*' KM - JSF Insert Navigation Case: 'edit-student' Pravidlo může mít více případů (success, failed) Implicitní navigace název stránky bez přípony '.xhtml' bez deklarace ve faces-config.xml se nemění URL 11

Konfigurace 'faces-config.xml' #2 <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>/index.jspx</from-view-id> <navigation-case> <from-outcome>student</from-outcome> <to-view-id>/student.xhtml</to-view-id> <redirect /> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/*</from-view-id> <navigation-case> <from-outcome>index</from-outcome> <to-view-id>/index.xhtml</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 Navigace je platná pro všechny stránky </faces-config> 12

Komponenta h:selectmanylistbox Přidání zapsaných předmětů 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; student.xhtml: <h:outputtext value="enrolled in:" /> <h:selectmanylistbox id="enrolledin" value="#{students.student.enrolledin" label="enrolled in"> <f:selectitems value="#{courses.allcourses" /> </h:selectmanylistbox> <h:message for="enrolledin" /> 13

JSF - konvertor Conversion Error setting value 'x33eja.model.course@475b7d' for 'null Converter' nepovedla se automatická konverze (String, Integer apod.) Třída s anotací @FacesConverter(value = "course") implementující interface Converter Implicitní metody getasobject a getasstring Vygenerování lookup: Insert Code Call EJB zvolit SchoolCenter @FacesConverter(value = "course") public class CourseConverter implements javax.faces.convert.converter { SchoolCenterLocal schoolcenter = lookupschoolcenterlocal(); @Override public Object getasobject(facescontext context, UIComponent component, String value) { return schoolcenter.getcourse(value); @Override public String getasstring(facescontext context, UIComponent component, Object value) { return String.valueOf(((Course) value).getcourseid()); private SchoolCenterLocal lookupschoolcenterlocal() {... Komponentě přidat converter atribut nebo f:converter element <h:selectmanylistbox id="enrolledin" value="#{students.student.enrolledin" label="enrolled in"> <f:selectitems value="#{courses.allcourses" /> <f:converter converterid="course" /> </h:selectmanylistbox> 14

Použití SelectItem Přidání předmětů již funguje komponenta selectmanylistbox nezobrazuje hezky názvy předmětů, nicméně výsledek je na seznamu studentů zobrazen správně Změna 'List<Course> getallcourses()' na: private List<SelectItem> allcourses; public List<SelectItem> getallcourses() { allcourses = new ArrayList<SelectItem>(); List<Course> courses = schoolcenter.getallcourses(); for (Course c : courses) { allcourses.add(new SelectItem(c, c.getname())); return allcourses; Možno místo objektu vložit jen primární klíč, ale pak k tomu odpovídajícím způsobem opravit konvertor. 15

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; student.xhtml: <h:selectonelistbox value="#{students.student.hassupervisor" size="1"> <f:selectitems value="#{students.allteachersselectlist" /> </h:selectonelistbox> 16

Zjednodušení práce se SelectItem Místo <f:selectitems value="#{students.allcourses" />, kde allcourses vrací list SelectItem je možné použít list a vše dodefinovat ve stránce: <f:selectitems value="#{courses.allcourses" var="course" itemvalue="#{course" itemlabel="#{course.name"/> Výhoda: přehlednější kód v managed bean Nevýhoda: při každém použití nutno definovat výstup, takže ve větší aplikaci může dojít k různorodému zobrazování výstupu 17

Zobrazení detailu Dříve s výjimkou data modelu možnost použít h:commandlink s vloženým parametrem pomocí: <f:param name= id value= 111 />. Možno vkládat argumenty: index.xhtml <h:column> <h:commandbutton value="edit" action="#{students.editstudent(item)" /> </h:column> StudentsBean.java public String editstudent(student student) { this.student = student; return "student"; student.xhtml Přidat atribut disabled a neumožnit jeho editaci: disabled="#{students.student.birthnumber!= null" Některé informace možné skrýt pomocí atributu rendered= #{!empty(...) Co chybí dobrému formuláři na detailu? Tlačítko 'Zpět' <h:commandlink action="index" value="back to index" immediate="true" /> 18

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"; 19

JSF - validace Atribut required nenulová hodnota vstupu f:validatelength Definice vlastního validátoru: Java: @FacesValidator(value="birthnumberValidator") public class BirthnumberValidator implements javax.faces.validator.validator { @Override public void validate(facescontext context, UIComponent component, Object value) throws ValidatorException { // vyhozením výjimky ValidatorException řekneme, že hodnota není OK Dříve v JSF 1.2: faces-config.xml: <validator> <validator-id>birthdatevalidator</validator-id> <validator-class>cz.cvut.x33eja.util.birthdatevalidator</validator-class> </validator> JSF: atribut 'validator="birthnumbervalidator"' nebo komponenta: <f:validator validatorid="birthnumbervalidator"/> Zobrazení chybové hlášky na daném místě pomocí: <h:message for="bn" /> 20

JSF - lokalizace File New category Other Properties File Translation: Name: translation, folder: x33eja KM Add Locale cs_cz, KM Add Property Key, Value students=students student_add=add Student student_edit=edit Na vybraném properties souboru KM Open a doplnit překlady pro ostatní jazyky faces-config.xml <application> <locale-config> <default-locale>en_gb</default-locale> <supported-locale>cs_cz</supported-locale> </locale-config> <resource-bundle> <base-name>x33eja.translation</base-name> <var>msgs</var> </resource-bundle> </application> Při nefunkčnosti přepínání v prohlížeči nahradit stejným klíčovým stringem např. Pouze en nebo cs. Stejně přejmenovat properties soubor. JSF Použití: <h:outputtext value="#{msgs.students"/> Nebo: <f:loadbundle basename="translation" var="msgs" /> - nefunguje doplňování kódu 21

Šablonovací systém #1 Dříve nutno přidat samostatnou knihovnu Facelets https://facelets.dev.java.net/ nyní součástí JSF 2 Doporučená XML syntaxe XHTML soubory Namespace: xmlns:ui="http://java.sun.com/jsf/facelets" Šablony i fragmenty stránky umísťujeme do WEB-INF, aby nebyly samostatně přístupné Web Pages New File kategorie JSF Facelets Template Name: x33eja-template, Folder: WEB-INF a vybrat rozvržení Vytvoří se navíc adresář 'resources' obsahující CSS definice 22

Šablonovací systém #2 Příklad šablony: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link href="./resources/css/default.css" rel="stylesheet" type="text/css" /> <link href="./resources/css/csslayout.css" rel="stylesheet" type="text/css" /> <title>#{pagetitle</title> </h:head> <h:body> <div id="top"> <ui:insert name="top">komponenta studium</ui:insert> </div> <div> <div id="left"> <ui:insert name="left"> <ui:include src="/web-inf/includes/menu.xhtml"/> </ui:insert> </div> <div id="content" class="left_content"> <ui:insert name="content">vychozí obsah</ui:insert> </div> </div> <div id="bottom"> <ui:insert name="bottom"> X33EJA 2011</ui:insert> </div> </h:body> </html> 23

Šablonovací systém #3 File New Java Server Faces Facelets Template Client File Name: students, zvolit šablonu (ve WEB-INF) Jako root tag ponechat html cokoli mimo ui:composition následně nebude zobrazeno Příklad klienta šablony (obsah mimo element ui:composition není zobrazen): <?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://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <body> <ui:composition template="./web-inf/includes-templates/x33eja-template.xhtml"> <ui:param name="pagetitle" value="správa studentů" /> <ui:define name="content"> <h:form> obsah </h:form> </ui:define> </ui:composition> </body> </html> 24

Šablonovací systém #4 Prosté vložení souboru <ui:include src="./web-inf/..." /> Vhodné pro vložení menu stránka obsahující element <ui:composition> Přidat namespace xmlns:ui="http://java.sun.com/jsf/facelets" 25

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íč) 26

Přehled možných výjimek #2 'java.io.notserializableexception: x33eja.model....' - implementovat pro entity rozhraní Serializable Unable to find matching navigation case with from-view-id '/index.xhtml' for action '#{students.newstudent' with outcome 'student' Ověřit, že existuje xhtml soubor referencovaný v outcome Caused by: Exception: org.eclipse.persistence.exceptions.validationexception Exception Description: Missing descriptor for [class java.lang.string]. Verify that the descriptor has been properly registered with the Session. Máte implementovaný konvertor? 27

Přehled možných výjimek #3 'java.util.missingresourceexception: Can't find bundle for base name translation, locale cs_cz' Doplnit správný balíček obsahující properties file např.: <base-name>x33eja.translation</base-name> 28