Apache Trinidad
-
Upload
mwessendorf -
Category
Technology
-
view
17.509 -
download
16
description
Transcript of Apache Trinidad
![Page 1: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/1.jpg)
Apache Trinidad
Hochwertige JSF Komponenten und vieles mehr...
![Page 2: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/2.jpg)
2
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
• Das Trinidad Projekt• Die Komponenten
• Welche Komponenten finden sich wo?• Demonstration einiger Komponenten
• Das Framework• HTML Ajax RenderKit• Dialog Framework• Optimierte Komponentenspeicherung• Menu Model Abstraction• Maven 2 Faces plugin• Personalization Framework• RenderKit Skinning Architektur
![Page 3: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/3.jpg)
3
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Das Apache Trinidad Projekt• Schenkung von Oracle• Gesponsert von der Apache MyFaces
PMC• Mentor Craig McClanahan (Mr. Struts)
• Apache Incubator bis Sonntag• 8 Committer (vier von Oracle)• Wachsende Community
• Unterprojekt von MyFaces (seit Sonntag)• Apache 2.0 Lizenz
![Page 4: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/4.jpg)
4
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Was wurde eingebracht [1]?• JSF Komponenten
• rund 100 Komponenten plus Zusatz-Features
• Darüber hinaus • HTML AJAX RenderKit• Dialog Framework• Optimierte Speicherung des
Komponentenstatus• Test Framework
![Page 5: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/5.jpg)
5
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Was wurde eingebracht [2]?• Menu Model Abstraktion• Maven 2 Faces Plugin
• Um Trinidad zu builden• Generiert Komponenten, Tags und XML-
Dateien
• Personalization Framework• RenderKit Skinning Architektur• Unterstützung von Facelets!
![Page 6: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/6.jpg)
Arbeiten mit Apache TrinidadDer tägliche Umgang mit Apache Trinidad
![Page 7: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/7.jpg)
7
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Das Trinidad-Projekt (1)• http://incubator.apache.org/adffaces• Wiki-Seite
• http://wiki.apache.org/myfaces/Trinidad
• SVN-Checkout• https://svn.apache.org/repos/asf/incubator/adffaces/
trunk/
• Bilden des Projekts (Konsole):• cd trinidad/trinidad
mvn install
![Page 8: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/8.jpg)
8
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Das Trinidad-Projekt (2)
• Trinidad Archetype• lauffähiges Projekt-Gerüst mit
Maven/Trinidad
mvn archetype:create -DarchetypeGroupId=org.apache.myfaces.trinidadbuild -DarchetypeArtifactId=myfaces-archetype-trinidad -DarchetypeVersion=incubator-m1-SNAPSHOT
-DgroupId=myAppId -DartifactId=testApp
![Page 9: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/9.jpg)
9
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Das Trinidad-Projekt (3)
• Trinidad JAR Files• trinidad-api-1.0.0-incubating• trinidad-impl-1.0.0-incubating
• Erstes Release innerhalb Apache• Download via webpage• Maven2 Incubator Repository• http://wiki.apache.org/myfaces/Trinidad
![Page 10: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/10.jpg)
10
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Die Projektstruktur (1)• 4 Module
• trinidad-api• Basisklassen, abstrakte Klassen• Eingriff nur für Trinidad-Entwickler notwendig
• trinidad-impl• Renderer-Klassen, Util-Klassen, Funktionalität…• Eingriff bei Erstellung/Veränderung von
Komponenten
• trinidad-demo
![Page 11: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/11.jpg)
11
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Die Projektstruktur (2)• trinidad-build
• zentrale Stelle für Definierung von• Komponenten • Renderern• Validatoren• Konvertern• Events
• \trinidad-build\src\main\resources\META-INF\maven-faces-plugin
• Generierung von Komponenten- & Tag-Klassen
![Page 12: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/12.jpg)
12
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
JSF Komponentenentwicklung• Schreiben von Komponenten-, Render-,
Tag-Klassen• Definierung der Klassen/Zuordnungen in
XML• Abläufe immer sehr ähnlich• fehleranfällig• “unnötiger” Schreibaufwand• Einzig echter Aufwand
• Implementierung des Renderers
![Page 13: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/13.jpg)
13
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Komponenten in Trinidad• Nur schreiben der Rendererklasse• in trinidad-impl
• trinidad-impl\src\main\java\org\apache\myfaces \trinidadinternal\renderkit\core
• Definierung der Komponente in trinidad-build• Refactoring & Generierung bei mvn install in
Trinidad-.jars• trinidad-api: Komponentenklassen• trinidad-impl: Rendererklassen• trinidad-impl: Taglibs
• Facelet’s Support for free, almost free...
![Page 14: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/14.jpg)
Die Komponenten von Trinidad
ZurücklehnenundEntspannen!
![Page 15: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/15.jpg)
15
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [1]
• <tr:breadCrumbs/> -Navigation • <tr:chart/> - Diagramm• <tr:chooseColor/> -
Datumseingabe• <tr:chooseDate/> - Farbeingabe• <tr:column/> - Spalte • <tr:commandButton /> - Button• <tr:commandLink /> - Schaltfläche
![Page 16: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/16.jpg)
16
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 17: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/17.jpg)
17
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [1]
![Page 18: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/18.jpg)
18
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
ChooseDate
• Die chooseDate Komponente wird mit einer inputDate Komponente verwendet
• Schnelle Auswahl eines Datums ohne zweites Fenster
<tr:chooseDate id="ch1" shortDesc="Choose Date"/>
<tr:inputDate id="df1a" chooseId="ch1" shortDesc="Choose Date"/>
![Page 19: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/19.jpg)
19
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [2]• <tr:commandNavigationItem /> - Navigation• <tr:document/> - Seitencontainer• <tr:form/> - Formular• <tr:goButton /> - Button (kein Action)• <tr:goLink /> - Link (kein Action)• <tr:group /> - Gruppierung• <tr:icon /> - Skin Icon
![Page 20: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/20.jpg)
20
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Document• Generiert die HTML Elemente:
• <html>, <body>, und <head>• Kann ebenso in allen nicht-HTML
Seiten verwendet werden<tr:document>
<f:facet name="metaContainer">
<f:verbatim><script...../></f:verbatim>
</f:facet>
</tr:document>
![Page 21: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/21.jpg)
21
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [3]• <tr:image /> - Bild (<img>)• <tr:importScript /> - Script Imports• <tr:inputColor /> - Farbeingabe• <tr:inputDate /> - Datumseingabe• <tr:inputFile /> - Upload• <tr:inputHidden /> - Hidden Field• <tr:inputListOfValues /> aka LOV
![Page 22: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/22.jpg)
22
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [3]
![Page 23: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/23.jpg)
23
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [3]
![Page 24: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/24.jpg)
24
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
ListOfValues• Spezialform einer text field Komponente• Mit Dialogsupport um einen Wert
auszuwählen• Trinidad Dialog Framework (später)
<tr:inputListOfValues label="Country:"
value="#{bean.value}"
searchDesc="Pick your country"
action="dialog:periodicTable"/>
![Page 25: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/25.jpg)
25
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [4]• <tr:inputNumberSpinbox /> - Spinbox• <tr:inputText /> - Text• <tr:iterator /> - besseres forEach• <tr:legend /> - Legende• <tr:media /> - „Multimedia“• <tr:message /> - FacesMessage• <tr:messages /> - Messages...
![Page 26: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/26.jpg)
26
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 27: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/27.jpg)
27
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
InputNumberSpinbox
• Spezielle input Komponente (für Zahlen)• Input Widget mit rauf/runter Pfeilen• stepSize
<tr:inputNumberSpinbox value="#{bean.year}"
minimum="1900" maximum="2050"/>
![Page 28: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/28.jpg)
28
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [5]
• <tr:navigationPane/> - Navigationscontainer• <tr:navigationTree /> - Navigationscontainer• <tr:outputDocument /> - Text Format • <tr:outputFormatted /> - HTML Ausgabe• <tr:outputLabel /> - Label• <tr:outputText /> - Textausgabe• <tr:page /> - Seiten Layout
![Page 29: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/29.jpg)
29
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 30: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/30.jpg)
30
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
NavigationPane / Tree• Generiert mehrere navigation items• Ein Knoten, der im Focus liegt, wird als
selected gerendert.
<tr:navigationPane hint="tabs" >
<tr:commandNavigationItem text="Page 1"
partialSubmit="true"
actionListener=
"#{demoCommandNavigationItem.navigationIt emAction}"/>...
</tr:navigationPane>
![Page 31: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/31.jpg)
31
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [6]
• <tr:panelAccordion /> - Accordion• <tr:panelBorderLayout /> - Layout• <tr:panelBox /> - Layout• <tr:panelButtonBar /> - Button-Layout• <tr:panelChoice /> - Choice-Layout• <tr:panelFormLayout /> - Form-Layout• <tr:panelGroupLayout/> - Gruppen-
Layout
![Page 32: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/32.jpg)
32
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [6]
![Page 33: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/33.jpg)
33
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 34: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/34.jpg)
34
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [7]
• <tr:panelHeader /> - Header für Bereich• <tr:panelHorizontalLayout /> - Layout• <tr:panelLabelAndMessage /> - Container *• <tr:panelList /> - HTML Listen• <tr:panelPage /> - page-Erweiterung• <tr:panelPageHeader /> - Page-Header• <tr:panelPartialRoot /> - PPR Support
![Page 35: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/35.jpg)
35
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 36: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/36.jpg)
36
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 37: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/37.jpg)
37
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
PanelLabelAndMessage• Layout Komponente• Kindkomponenten meistens input Komp.• Facetunterstützung (help/end)<tr:panelLabelAndMessage for="selectDate">
<f:facet name="help">
<tr:outputText value="Pick a date"/>
</f:facet>
<tr:inputDate id="selectDate"simple="true"/>
</tr:panelLabelAndMessage>
![Page 38: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/38.jpg)
38
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [8]
• <tr:panelRadio /> - Wie panelChoice• <tr:panelSideBar /> - Seitennavigation• <tr:panelTabbed /> - Tabs...• <tr:panelTip /> - Hinweise• <tr:poll/> - PPR Komponente• <tr:processChoiceBar /> - Button + Choice• <tr:progessIndicator /> - PPR Fortschritt
![Page 39: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/39.jpg)
39
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 40: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/40.jpg)
40
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 41: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/41.jpg)
41
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Poll / ProgressIndicator• Poll sendet PPR Request (in Millisek.)• ProgressIndicator hat spezielle Modelklasse
• BoundedRangeModel (abstract) und impl DefaultBoundedRangeModel
<tr:poll id="poll" interval="2000" />
<tr:progressIndicator action="end"
partialTriggers="poll" value="#{bean.model}">
..
![Page 42: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/42.jpg)
42
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [9]
• <tr:resetButton /> - Button• <tr:selectBooleanCheckbox /> - Checkbox• <tr:selectBooleanRadio /> - Radio-Button• <tr:selectItem /> - Select Item• <tr:selectManyCheckbox /> - „many“
Checkbox• <tr:selectManyListbox /> - „many“ Listbox
![Page 43: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/43.jpg)
43
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
SelectManyCheckbox• Generiert mehrere checkbox Felder
<tr:selectManyCheckbox label="Label" value="#{list.intArray}">
<tr:selectItem label="First" value="1"/>
<tr:selectItem label="Second" value="2"/>
<tr:selectItem label="Third" value="3"/>
</tr:selectManyCheckbox>
![Page 44: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/44.jpg)
44
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [10]
• <tr:selectManyShuttle /> - Picklist• <tr:selectOneChoice /> - Choice-Auswahl• <tr:selectOneListbox /> - Listbox-Auswahl• <tr:selectOneRadio /> - Radio-Auswahl• <tr:selectOrderShuttle /> - Picklist• <tr:selectRangeChoiceBar /> - Range-
Auswahl• <tr:separator /> - Separation
![Page 45: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/45.jpg)
45
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 46: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/46.jpg)
46
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 47: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/47.jpg)
47
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Shuttle Komponenten• Komponente um Werte von vorne nach
hinten zu verschieben („pick list“)
<tr:selectManyShuttle value=„#{bean.value}”>
<f:selectItems value=“#{bean.items}” />
</tr:selectManyShuttle>
<tr:selectOrderShuttle reorderOnly=“true”>
...
![Page 48: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/48.jpg)
48
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [11]
• <tr:showDetail /> - „Toggling“• <tr:showDetailHeader /> - „Toggling“ • <tr:showDetailItem /> - Detail-Item• <tr:singleStepButtonBar /> - 1vonN-
Button• <tr:spacer /> - Leer-Element• <tr:subform /> - Teil-Formular
![Page 49: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/49.jpg)
49
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 50: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/50.jpg)
50
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
SingleStepButtonBar• Rendert zwei Buttons
• Previous• Next• Text für den aktuellen „state“
<tr:singleStepButtonBar id="singleStep1"
selectedStep="2" maxStep="5" text="Stage"
previousAction="#{action.app1}"
nextAction="#{action.app2}"/>
![Page 51: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/51.jpg)
51
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [12]
• <tr:table /> - Tabelle• <tr:train /> - Train• <tr:tree /> - Tree• <tr:treeTable /> - TreeTable
![Page 52: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/52.jpg)
52
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
![Page 53: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/53.jpg)
53
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Core Komponenten [12]
![Page 54: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/54.jpg)
54
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Table - Sortieren<tr:column sortProperty="nachname" sortable="true" headerText="Nachname" formatType="text">
<tr:outputText value="#{person.nachname}"/></tr:column>
![Page 55: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/55.jpg)
55
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Table - Selektieren
<tr:table binding="#{mybean.table}" rowSelection="multiple" ...>
<f:facet name="footer">
<tr:commandButton text="Delete" actionListener="#{mybean.performDelete}"/>
</f:facet> ...
</tr:table>
![Page 56: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/56.jpg)
56
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Table – Selektieren - Backendpublic void performDelete(ActionEvent action) {
Set<String> selection = table.getSelectionState().getKeySet();
List<Person> selectedObjects = new
ArrayList<Person>(); for (String rowKey: selection) { table.setRowKey(rowKey); selectedObjects.add((Person)
table.getRowData()); } personList.removeAll(selectedObjects); table.getSelectionState().clear(); }
![Page 57: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/57.jpg)
57
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
HTML Komponenten• <tr:body />• <tr:cellFormat />• <tr:frame />• <tr:frameBorderLayout />• <tr:head />• <tr:html />• <tr:rowLayout />• <tr:script />• <tr:styleSheet />• <tr:tableLayout />
![Page 58: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/58.jpg)
58
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Helfer Objekte [1]
• <tr:attribute /> (nicht im JSF 1.2 branch)• <tr:forEach /> (nicht im JSF 1.2 branch)• <tr:validator /> (nicht im JSF 1.2 branch)• <tr:colorConverter />• <tr:dateTimeConverter />• <tr:numberConverter />
![Page 59: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/59.jpg)
59
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Helfer Objekte [2]
• <tr:resetActionListener />• <tr:returnActionListener />• <tr:setActionListener /> (JSF 1.2 *)• <tr:validateByteLength />• <tr:validateDateTimeRange />• <tr:regExpValidator />
![Page 60: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/60.jpg)
60
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Helfer Objekte [3]• <tr:validateDateRestriction />
invalidDaysOfWeek – String[]invalidMonths – String[]invalidDays – DateListProvider
public List <Date> getDateList(FacesContext context, Calendar base, Date rangeStart, Date rangeEnd);
![Page 61: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/61.jpg)
Was bringt <tr:xxx /> ?
![Page 62: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/62.jpg)
62
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Trinidad JSF Tags ...• Keine Notwendigkeit nur Trinidad Tags
zu verwenden (nicht wie bei Tobago)• Tags können mit Standardtags
gemischt werden (auch Tomahawk)• Trinidad Tags sind mächtiger:
• oft mehr Features• Verwendbar innerhalb von <tr:forEach />
(standardmäßig nicht)• Effizienteres client side state saving
• pro Komponente reduzierte Größe
![Page 63: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/63.jpg)
63
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Standard vs Trinidad [1]• accesskey – accessKey• readonly – readOnly• alt and/or title – shortDesc • Style – inlineStyle• dir, lang – n/a (dir durch skinning)• h:outputLabel / h:inputText
• tr:inputText label=„myLabel“
• h:panelGrid tr:panelBox
![Page 64: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/64.jpg)
64
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Standard vs Trinidad [2]• commandButton
• value vs text
• form• Kein NamingContainer (in Trinidad )
• Unterstützt legacy JS besser
• inputSecret• in Trinidad nicht vorhanden, stattdessen:
secret Attribut bei inputText
• uvm ... (siehe http://incubator.apache.org/adffaces/spec-diff.html)
![Page 65: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/65.jpg)
Nur so wenige Komponenten?
![Page 66: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/66.jpg)
66
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
HTML AJAX RenderKit• aka PPR (Partial Page Rendering)• Inkrementelle DOM-Aktualisierung• <iframe>-Kommunikations-Kanal (kein XmlHttpRequest
…)• unterstützt file-upload
• Client-side Validierungen (kein form.submit())• Bei allen Komponenten dabei
• auch weiterführend; z.b. Table data paging
![Page 67: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/67.jpg)
67
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Verwendung von PPR• Drei wichtige Attribute:
• autoSubmit• Für input Komponenten um eine action zu
feuern
• partialSubmit• Für command Komponenten (link/button)
• partialTriggers• Für listeners
• Beziehen sich auf partial/auto Submit Komponente• „repainting“ der Komponente
![Page 68: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/68.jpg)
68
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
<tr:selectOneRadio value="#{partialBean.selectOne}"
autoSubmit="true" id="select1">
<tr:selectItem label="First" value="Beer"/>
<tr:selectItem label="Second" value="more beer"/>
<tr:selectItem label="Third" value="sold out!"/>
</tr:selectOneRadio>
<tr:outputText value="#{partialBean.selectOne}"
partialTriggers="select1"/>
![Page 69: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/69.jpg)
69
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Verwendung von PPR• Via Java API: UIXTable table = (UIXTable) event.getComponent().findComponent("userTable");
table.setValue(this.users);
RequestContext afContext = RequestContext.getCurrentInstance();
afContext.addPartialTarget(table);
![Page 70: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/70.jpg)
70
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Poll Komponente• Oder... ein live-ticker<tr:poll pollListener="#{stocksBean.onPoll}"
interval="2000" id="pollid" />
<tr:table id="data" binding="#{stocksBean.table}"
border="2" partialTriggers="pollid" var="stock">
...
</tr:table>
![Page 71: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/71.jpg)
71
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Poll Komponente (Bean)
• PollEvent / PollListener
public void onPoll(PollEvent event)
{
initStocks();
}
![Page 72: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/72.jpg)
72
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Dialog Framework
• Verschachtelte page-flows• wizards
• Erweiterte Navigation „outcomes“ action=“dialog:wizard” (konfigurierbar)
• Isolierter Dialog/Prozess-scope• #{processScope.wizardBean}
• LaunchEvent und ReturnEvent
![Page 73: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/73.jpg)
73
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Dialog FrameworkBeispiel:<tr:commandButton id="button2" text="No
Account?" action="#{dialogBean.createAccount}"
launchListener="#{dialogBean.launch}"
returnListener="#{dialogBean.returned}"
immediate="true" useWindow="true"
windowWidth="250" windowHeight="250"/>
![Page 74: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/74.jpg)
74
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
public String createAccount(){
RequestContext rCtx = RequestContext.getCurrentInstance();
Map<String, Object> process = rCtx.getPageFlowScope();
process.put("tmpUser", new User());
return "dialog:newAccount";
}
public void returned(ReturnEvent event){
User u = (User) event.getReturnValue();
...
RequestContext.getCurrentInstance()
.getPageFlowScope().clear()
}
![Page 75: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/75.jpg)
75
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Optimierte Status-Speicherung• JSF UIComponentBase basiert auf JavaBeans
• Benutzt Java-Reflection für Map Zugriffe
• Trinidad UIXComponentBase benutzt eine Map• JavaBeans property Methoden delegieren zur Map• Map benutzt PropertyKeys für optimierte
Performance
• Eliminiert die Notwendigkeit • saveState() und restoreState() Methoden der
Komponente zu schreiben
![Page 76: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/76.jpg)
76
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
„klassische“ JSF Komponente• „normale“ setter Methoden / „funny“
getter Methodenpublic String getFoo(){
if (_foo != null) return _foo;
ValueBinding vb = getValueBinding("foo");
return vb != null ? (String)vb.getValue(getFacesContext())
: null;
}
![Page 77: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/77.jpg)
77
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Trinidad Komponenten• Generierte Komponenten...• getProperty() / setProperty()
• UIXComponentBase
final public String getFoo(){
return
ComponentUtils.resolveString(getProperty (FOO_KEY) );
}
![Page 78: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/78.jpg)
78
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Maven 2 Faces Plugin• Komponentenbehandlung siehe voriges
Kapitel• JavaCC Plugin
• legacy• TagDoc Plugin
• generiert Tag - Doku für JSF• faces-config.xml metadata• Doku von facets / events uvm.
• i18n Plugin• JavaScript Plugin
• Obfuscator, …• Jdev Plugin• XTRS Plugin
![Page 79: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/79.jpg)
79
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Personalization Framework
• Eine Webapplikation für viele end-user• Jeder möchte das Erscheinungsbild
anpassen• z.B. Reihenfolge der Komponenten ändern
• ChangeManager wird benachrichtigt, wenn Benutzer die Änderung durchführt• Unterstützt auch Session-basierende
Änderungen
![Page 80: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/80.jpg)
80
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
RenderKit Extension• Senden von JavaScript an den Client:
FacesContext facesContext = FacesContext.getCurrentInstance();
ExtendedRenderKitService service =
(ExtendedRenderKitService)Service.getRenderKitService (facesContext,ExtendedRenderKitService.class);
service.addScript(facesContext,"alert('Script added by ExtendedRenderKitService')");
![Page 81: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/81.jpg)
81
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
RenderKit Skinning Architecture• Bisher: Styling über styleClass oder style• Passiert auf Ebene von DOM-Knoten • Besser: Abstraktes Styling auf
Komponentenebene• Trinidad Skinning
• Anpassbares look and feel• Portabel über Applikationen hinweg• Portabel über RenderKits hinweg• Null Code
• CSS 3.0 Syntax
![Page 82: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/82.jpg)
82
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
RenderKit Skinning Architecture• Anlegen einer CSS Datei
• Registrieren der Datei in der trinidad-config.xml und der trinidad-skins.xml
• Referenzieren auf Komponenten über Pseudoelemente• af|Komponente::Attribut { … }• zb.:
af|panelTabbed::tab { font-weight:bold; font-family:Tahoma; padding:2px 8px;}
![Page 83: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/83.jpg)
83
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
RenderKit Skinning Architecture• auch vordefinierte globale Selektoren
• .AFButtonServerText:alias {..}• :alias heißt, dass Style mehrere
Komponenten beeinflußt• http://incubator.apache.org/adffaces/skin-
selectors.html
![Page 84: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/84.jpg)
84
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Konfiguration• /WEB-INF/trinidad-config.xml<?xml version="1.0"?> <trinidad-config xmlns="http://myfaces.apache.org/trinidad/config"><!-- Enable debug output --> <debug-output>true</debug-output><accessibility-mode>#{user.accessibilityMode}</accessibility-mode><skin-family>customSkin</skin-family>
</trinidad-config>
![Page 85: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/85.jpg)
85
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Interessante Konfigurationsitems
• Accessibility:default, inaccessible, screen-reader
• right-to-left:false, true
• debug-output:false, true
![Page 86: Apache Trinidad](https://reader034.fdocuments.net/reader034/viewer/2022042521/548c9e02b4795927058b4630/html5/thumbnails/86.jpg)
86
Apache Trinidad – 1st class JSFMatthias Wessendorf Oracle Corp.
Demo Anwendung FacesGoodies
• Quickstart für Trinidad• Facelets und Shale• Spring 2 und JPA (Toplink als Impl)
• http://code.google.com/p/facesgoodies• Frei nutzbar für Ihr (erstes) Trinidad
Projekt