20
Publicvoid - Onlinenotes SWOS HS 2011/12

Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

Embed Size (px)

Citation preview

Page 1: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

Publicvoid - OnlinenotesSWOS HS 2011/12

Page 2: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

2

Inhalt

•Vorstellung Website•Probleme - Lösungen•Quick & easy

Page 3: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

3

Vorstellung Website

Onlinenotes

Page 4: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

4

Problem

(Primefaces) AJAX Update

•Notiz Detail (Komponente id=“noteDetail”) wurde nicht aktualisiert obwohl:

<p:ajax event="rowSelect" update=“noteDetail " />

<h:panelGroup id=„noteDetail"> …</panelGroup>

Page 5: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

5

Lösung

•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

Page 6: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

6

Problem

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?

•…

Page 7: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

7

Lösung

•Innerhalb h:commandButton und h:commandLink können sogenannte PropertyActionListener angegeben werden um Daten mitzugeben.

<f:setPropertyActionListener

value="#{overviewBean.selectedNote}„

target="#{noteBean.currentNote}" />

Page 8: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

8

Problem

Aktualität der Objekte / Scope Problem

•Änderungen an Objekten / Beans wurden nicht überall übernommen und die alten Daten wurden angezeigt führt zu Inkonsistenzen

z.B. Anzahl Notes in einem Notebook

Page 9: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

9

Lösung

•JPA Cache disablen persistence.xml Cache Shared cache mode: NONE

Page 10: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

10

Problem

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…

Page 11: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

11

Lösung

•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!

Page 12: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

12

Problem

URL bleibt die selbe nach Wechsel aufandere Seite

•Mit <h:commandButton value="create note" action="notes" /> sollte man auf die Seite notes.xhtml kommen.

•Der Inhalt erscheint zwar von notes.xhtml, jedoch ist die URL immer noch die alte.

Page 13: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

13

Lösung

•Ist in JSF so, da default mit POST gearbeitet wird.

•Alternativ mit GET arbeiten Komplizierter zu Implementieren

Page 14: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

14

Quick & easy

Input Validator (1)1. Klasse erstellen die Validator

implementiert2. Methode „validate“ implementieren

1. Validierungslogik erstellen2. Wenn NOK: FacesMessage für

Fehlermeldung erstellen und ValidatorException(message) werfen.

Page 15: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

15

Quick & easy

Input Validator (2)3. Validator im faces-config.xml

registrieren

4. z.B. innerhalb <h:inputText></h:inputText> einbinden:

<f:validator validatorId=„...PasswordValidator" />

Page 16: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

16

Quick & easy

Converter (1)1. Klasse erstellen die Converter

implementiert2. Methode „getAsObject“

implementieren1. Ein String Repräsentant des Objekts in

das effektive Objekt umwandeln3. Methode „getAsString“ implementieren

1. Das Objekt in ein String Repräsentant umwandeln

Page 17: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

17

Quick & easy

Converter (2)3. Converter im faces-config.xml

registrieren

4. z.B. bei einem Select-Element einbinden:<h:selectOneMenu … converter="#{notebookConverter}">

…</h:selectOneMenu>

Page 18: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

18

Quick & easyTemplating (1)1. Template (z.B. temp.xhtml) erstellen2. Facelets Namespace registrieren in HTML-

Tag3. Ersetzbare Content-Bereiche markieren mit

<ui:insert name="PageContent" />4. Auf der effektiven Content-Seite Template

einbinden<ui:composition template="temp.xhtml"> …</ui:composition>

Page 19: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

19

Quick & easy

Templating (2)5. Innerhalb <ui:composition> können nun

die Content-Blöcke definiert werden mit <ui:define name=" PageContent ">

CONTENT</ui:define>

Page 20: Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3

kalik1, messu2, joosp1, stahm3

20

Fragen?