Da sich die UI-Komponenten in ihrer Fähigkeit Daten anzuzeigen zum Teil stark unterscheiden, stehen in RapidClipse 3 verschiedene Daten-Container Typen zur Verfügung:
- Container (Tabelle) - Kann eine Liste mit Datensätzen (Items) speichern.
- XdevBeanItemContainer
- Wird von RapidClipse automatisch verwendet, wenn Property > Data > findAll oder eine benutzerdefinierte Query-Methode ausgewählt wird.
- Bietet kein Lazy-Loading zwischen Datenbank und Server. Das Abfrageergebnis wird vollständig an den XdevBeanItemContainer (Server) übertragen.
- Manuelles Hinzufügen von Datensätzen (BeanItems) möglich.
XdevLazyEntityContainer - Wird von RapidClipse automatisch verwendet, wenn Property > Data > findAll oder eine benutzerdefinierte Query-Methode ausgewählt wird.
- Item (Datensatz) - Kann 1 Datensatz bestehend aus mehreren Properties speichern. BeanItem ist eine Erweiterung von Item.
- Property (Einzelner Wert) - Kann nur 1 einzelnen Wert speichern.
Container
Ein Container kann eine Liste mit beliebig vielen Datensätzen (BeanItems) aufnehmen. RapidClipse bietet mit dem XdevLazyEntityContainer und dem XdevBeanItemContainer 2 verschiedene Container-Varianten.
XdevLazyEntityContainer
Anchor | ||||
---|---|---|---|---|
|
Der XdevLazyEntityContainer ist eine Erweiterung von Container.
Wird i.d.R. nur von RapidClipse intern verwendet, wenn Property > Auto query data selektiert wird.
Bietet Lazy-Loading zwischen Datenbank und Server. Es werden immer nur so viele Datensätze zwischen Datenbank und Server übertragen, wie vom Client durch Scrollen oder Paging angefordert werden.
- Nimmt keine dynamischen SQLs entgegen (automatisch immer SELECT * FROM ...)
- Manuelles Hinzufügen von BeanItems nicht möglich.
- Item (Datensatz) - Kann 1 Datensatz bestehend aus mehreren Properties speichern. BeanItem ist eine Erweiterung von Item. Property (Einzelner Wert) - Kann nur 1 einzelnen Wert speichern.
Container
Ein Container kann eine Liste mit beliebig vielen Datensätzen (BeanItems) aufnehmen.
Model für:
- XdevTable
- XdevComboBox
- XdevListSelect
- XdevTwinColSelect
- XdevTree
- XdevTreeTable
...
- Wird von RapidClipse automatisch verwendet, wenn Property > Data > findAll oder eine eigene Query-Methode ausgewählt wird.
- Bietet kein Lazy-Loading zwischen Datenbank und Server. Das Abfrageergebnis wird vollständig an den XdevBeanItemContainer (Server) übertragen.
- Manuelles Hinzufügen von Datensätzen (BeanItems) möglich.
...
Examples:
Entity programmatisch zuweisen
Code Block language java theme Confluence
...
table.setContainerDataSource(productsContainer);
Häufiger Anwendungsfall:
Auslesen eines Daten-Containers aus einer Table:
Container von XdevTabel zurückgeben lassen
Code Block language java theme Confluence XdevBeanItemContainer<Products> productsContainer = table.
...
getContainerDataSource();
Zuweisung:
Erfolgt mit der Methode setContainerDataSource:
Container Instanzieren
...
Der XdevLazyEntityContainer ist eine Erweiterung, die von Container ableitet.
Wird i.d.R. nur von RapidClipse intern verwendet, wenn Property > Auto query data selektiert wird.
Bietet Lazy-Loading zwischen Datenbank und Server. Es werden immer nur so viele Datensätze zwischen Datenbank und Server übertragen, wie vom Client durch Scrollen oder Paging angefordert werden.
- Nimmt keine dynamischen SQLs entgegen (automatisch immer SELECT * FROM ...)
- Manuelles Hinzufügen von BeanItems nicht möglich.
Code Block language java theme Confluence
...
table.setContainerDataSource(productsContainer);
...
XdevBeanItemContainer<Products> productsContainer = new XdevBeanItemContainer<Products>(Products.class);
BeanItem
Das BeanItem ist eine Erweiterung, die von Item ableitet. Ein BeanItem kann eine Liste mit Properties (einzelne Werten) und damit 1 Datensatz aufnehmen.
Chai | 10 boxes x 20 bags | 18 | 39 | 0 | false | 10 |
Model für:
- XdevTextField
Instanzierung:
Code Block | ||||
---|---|---|---|---|
| ||||
BeanItem<Products> product = new BeanItem<Products>(null); |
Häufiger Anwendungsfall:
Auslesen eines Datensatzes aus der selektierten Zeile einer Table:
Code Block | ||||
---|---|---|---|---|
| ||||
BeanItem<Products> product = table.getSelectedItem(); |
Zuweisung:
Erfolgt mit der Methode setIemDataSource:
...
Eine Property kann nur einen einzelnen Wert (Datenfeld) aufnehmen.
Chai |
Model für:
- XdevTextField
- XdevPasswordField
- XdevInlineDateField
- XdevPopupDateField
- XdevNativeSelect
- XdevRichTextArea
Instanzierung:
Code Block | ||||
---|---|---|---|---|
| ||||
Property<String> productName = new ObjectProperty<String>("Chai"); |
Häufiger Anwendungsfall:
Auslesen eines Datenfeldes aus einem Item, z.B. der selektierten Zeile einer Table:
Code Block | ||||
---|---|---|---|---|
| ||||
Property<String> productName = product.getItemProperty("productname"); |
Zuweisung:
Erfolgt mit der Methode setPropertyDataSource:
...