200 likes | 272 Views
Publicvoid - Onlinenotes. SWOS HS 2011/12. Vorstellung Website Probleme - Lösungen Quick & easy. Inhalt. Onlinenotes. Vorstellung Website. ( Primefaces ) AJAX Update
E N D
Publicvoid - Onlinenotes SWOS HS 2011/12
Vorstellung Website Probleme - Lösungen Quick & easy kalik1, messu2, joosp1, stahm3 Inhalt
Onlinenotes kalik1, messu2, joosp1, stahm3 Vorstellung Website
(Primefaces) AJAX Update Notiz Detail (Komponente id=“noteDetail”) wurdenichtaktualisiert obwohl:<p:ajax event="rowSelect" update=“noteDetail" /><h:panelGroup id=„noteDetail"> …</panelGroup> kalik1, messu2, joosp1, stahm3 Problem
Komponenten ID‘s werden im HTML Output verschachtelt generiert.Also z.B. id=„form:komponente1:komponente2“ ID‘s müssen verschachtelt angegeben werden Alle Komponente mit ID‘s vergeben, sonst werden generische ID‘s erstellt kalik1, messu2, joosp1, stahm3 Lösung
Objektübergabe auf eine andere Seite Per URL Parameter und auf der neuen Seite mit diesem das Objekt aus der DB holen? In ein Hidden-Field und dann posten? In der action des aktuellen Beans probieren direkt über den Setter das Objekt im anderen Bean zu setzen? … kalik1, messu2, joosp1, stahm3 Problem
Innerhalb h:commandButton und h:commandLink können sogenannte PropertyActionListenerangegeben werden um Daten mitzugeben.<f:setPropertyActionListenervalue="#{overviewBean.selectedNote}„target="#{noteBean.currentNote}" /> kalik1, messu2, joosp1, stahm3 Lösung
Aktualität der Objekte / Scope Problem Änderungen an Objekten / Beanswurden nicht überall übernommen und die alten Daten wurden angezeigt führt zu Inkonsistenzenz.B. Anzahl Notes in einem Notebook kalik1, messu2, joosp1, stahm3 Problem
JPA Cache disablen persistence.xml Cache Sharedcachemode: NONE kalik1, messu2, joosp1, stahm3 Lösung
JPA Cascade Options Beim Löschen einer Note wurde praktisch alle Daten der DB gelöscht, d.h. alle anderen Notizen, der User, die Notebooks. Fehler wurde zuerst im BackingBean vermutet… kalik1, messu2, joosp1, stahm3 Problem
In JPA kann definiert werden, welche Actions als Cascaded ausgeführt werden sollen. Diese Option war für alle Modelle auf „All“ gesetzt. Kettenreaktion Individuell pro Modell und Property einstellen! kalik1, messu2, joosp1, stahm3 Lösung
URL bleibt die selbe nach Wechsel auf andere Seite Mit <h:commandButton value="create note" action="notes" />sollte man auf die Seitenotes.xhtmlkommen. DerInhalterscheintzwar von notes.xhtml, jedochist die URL immernoch die alte. kalik1, messu2, joosp1, stahm3 Problem
Ist in JSF so, da default mit POST gearbeitet wird. Alternativ mit GET arbeiten Komplizierter zu Implementieren kalik1, messu2, joosp1, stahm3 Lösung
Input Validator (1) • Klasseerstellen die Validator implementiert • Methode „validate“ implementieren • Validierungslogikerstellen • Wenn NOK: FacesMessagefürFehlermeldungerstellen und ValidatorException(message)werfen. kalik1, messu2, joosp1, stahm3 Quick & easy
Input Validator (2) Validator im faces-config.xml registrieren z.B. innerhalb <h:inputText></h:inputText> einbinden:<f:validatorvalidatorId=„...PasswordValidator" /> kalik1, messu2, joosp1, stahm3 Quick & easy
Converter (1) • Klasseerstellen die Converterimplementiert • Methode „getAsObject“ implementieren • Ein String Repräsentant des Objekts in das effektive Objekt umwandeln • Methode „getAsString“ implementieren • Das Objekt in ein String Repräsentant umwandeln kalik1, messu2, joosp1, stahm3 Quick & easy
Converter (2) Converter im faces-config.xml registrieren z.B. bei einem Select-Element einbinden:<h:selectOneMenu … converter="#{notebookConverter}"> …</h:selectOneMenu> kalik1, messu2, joosp1, stahm3 Quick & easy
Templating (1) Template (z.B. temp.xhtml) erstellen Facelets Namespace registrieren in HTML-Tag Ersetzbare Content-Bereiche markieren mit<ui:insertname="PageContent" /> Auf der effektiven Content-Seite Template einbinden<ui:compositiontemplate="temp.xhtml"> …</ui:composition> kalik1, messu2, joosp1, stahm3 Quick & easy
Templating (2) Innerhalb <ui:composition> können nun die Content-Blöcke definiert werden mit <ui:definename="PageContent"> CONTENT</ui:define> kalik1, messu2, joosp1, stahm3 Quick & easy
kalik1, messu2, joosp1, stahm3 Fragen?