The XdevFieldGroup is a virtual GUI component (Virtual Component) that connects the form components with the associated entity or with its attributes (mapping). Through mapping between form and entity, form data can be easily transferred in the form. This data can be saved and edited with a single method call. These form components can be located in any position and don’t have to be grouped or placed in a shared parent container.
New - Generates new, empty record in the memory.
this.fieldGroup.setItemDataSource(new Category()); |
Reset - Resets all form components.
this.fieldGroup.discard(); |
Save - Saves the record in the database.
this.fieldGroup.save(); |
Save + new - Saves the record in the database and generates a new, empty record in the memory.
this.fieldGroup.save(); this.fieldGroup.setItemDataSource(new Category()); |
Create empty product object and pass it to XdevFieldGroup, e.g. to create a new record:
Products product = new Products(); fieldGroup.setItemDataSource(product); |
Load record with ID 5 and pass to XdevFieldGroup::
Category category = new CategoryDAO().find(5); fieldGroup.setItemDataSource(category); |
Pass the selected line of an XdevFieldGroup (without support of GUI builder) in Property > Connected form. To achieve this, you will need to create the value change event in XdevTable.
BeanItem<Category> item = table.getSelectedItem(); fieldGroup.setItemDataSource(item); |
Category category = new Category(); // Readout the textFields and filling the entity category.setCategoryname(this.textField.getValue()); category.setDescription(this.textField2.getValue()); category.setPicture(this.textField3.getValue()); // Saving the entity try { new CategoryDAO().save(category); } catch (Exception e) { // TODO: handle exception } |
The following UI components can be included in the mapping and can persist in the database via form actions.
Mapping by code - Manually maps components to the respective property
fieldGroup.bind(textField, "name"); |
Synchronization - Contents of the individual UI components are synchronized with the underlying model, i.e., If they are based on a product entity, the values of the UI will be written into the product entity.
fieldGroup.commit(); |
Validation of all fields - All of the validation rules for the mapped fields are applied and tested
boolean valid = fieldGroup.isValid(); if (valid) { ... } else { ... } |
Checking for change - Determines whether there have been any changes throughout the entire FieldGroup
boolean modified = fieldGroup.isModified(); |
Field Group as Ad - Sets all fields in a field group to read only
fieldGroup.setReadOnly(true); |