3.x.x release notes
3.3.0-SNAPSHOT
EntityQuery infrastructure changes:
- 
CollectionEntityQueryExecutornow supports aSupplierfor the collection - 
an
EntityQueryExecutorwill now be registered automatically for any Spring DataCrudRepository- 
the default implementation is a
CollectionEntityQueryExecutorusing the repository to fetch all items - 
previously only
JpaSpecificationExecutorandQueryDslPredicateExecutorwould register anEntityQueryExecutor 
 - 
 
New features:
- 
it is now possible to specify default values for the template controls of embedded collections
 
Bug-fixes and minor improvements:
- 
fixed bug where list actions were added to table header row on a list view
 - 
uncaught exceptions are now registered as global validation errors on CRUD views
 
3.2.0.RELEASE
This release contains a lot of internal changes, specifically related to the addition of the EntityPropertyController and the EntityPropertiesBinder.
Overall upgrading from the previous version should be seamless for most applications.
- 
addition of
EntityAttributes.FORM_ENCTYPEthat can be specified asEntityViewFactoryorEntityPropertyDescriptorattribute- 
its value should be the actual enctype that should be used for submitting the form of a form view, eg
FormViewElement.ENC_MULTIPART - 
this is especially useful to change the form enctype based on the presence of property descriptors (for example a file property)
 - 
the attribute on a
EntityViewFactorywill take precedence, property descriptors will only be inspected if it is missing 
 - 
 - 
more options are now available for fieldset property controls
- 
a fieldset can now be rendered either as a HTML
FieldsetFormElementor using a custom template - 
a custom template can be configured on a property using the
ViewElementFieldset.TEMPLATEattribute - 
several default templates have been provided with default styling for common form layouts in Admin Web
 - 
if no property selector is specified, a fieldset property will select all child properties as its members
 
 - 
 - 
added support for building-views/list-view.adoc#filter-by-access
- 
this can be used to hide items from a list view if the user does not have the correct permissions
 
 - 
 - 
addition of the building-views/form-view.adoc#detail-view which offers a readonly view for entities.
- 
it’s possible to configure an entity to link to the detail view instead of the update view by default
 
 - 
 - 
link to the delete view (delete button) has moved from the tab menu (
EntityAdminMenu) to the detail and update view- 
see the customize link to delete view guide to revert to the previous behaviour.
 
 - 
 - 
embedded association views now include an inner page (tab) title and menu
- 
the sub-menu is only rendered if there are at least 2 menu items
 - 
this allows an additional level of menu items for managing embedded associations
 
 - 
 - 
addition of the
EntityPropertiesBinderwhich allows more advanced binding of custom properties- 
each property is now backed by an
EntityPropertyControllerwhich can be used to set behaviour (data fetching, writing) on a single property level 
 - 
 - 
collections of embedded objects (eg
List<Address>) are now fully supported and a default UI control will be generated - 
several bugfixes and minor improvements:
- 
fixed some issues with using
UUIDor other custom types as id for entities - 
added default control support for
ZonedDateTimeandDuration - 
added EQL support for
CONTAINS NULLas an alternative toIS EMPTY- 
this can be used in combination with groups:
CONTAINS (NULL,1)is the equivalent orCONTAINS 1 or IS EMPTY - 
this also fixes some issues when using a collection type property in a basic EQL filter
 
 - 
 - 
improved EQL support for negative operands:
NOT CONTAINS (1,2)now expands toNOT CONTAINS 1 AND NOT CONTAINS 2 
 - 
 
3.1.0.RELEASE
- 
if an
EntityAssociationhas a customEntityFactoryattribute, that factory will be used for both new instance and DTO creation- 
previously it was only used for new instance creation
 
 - 
 - 
EntityModule now uses
evo-inflectorto auto-generate plural forms, this should yield better results in English - 
the
Stringformats of auditable properties can now be customized using global message codes:- 
Auditable.createdDate - 
Auditable.created - 
Auditable.lastModifiedDate - 
Auditable.lastModified 
 - 
 - 
several minor issues with EQL filtering have been fixed
 - 
EntityQuerycondition translation is now done recursively as long as the result is modified - 
a
CollectionEntityQueryExecutorimplementation has been added that can be used to query a collection of objects if there is anEntityPropertyRegistrywhich provides the property metadata of the collection members 
3.0.1.RELEASE
- 
the module dependencies for EntityModule have been optimized for re-use
- 
as a result EntityModule no longer transitively pulls in BootstrapUiModule or AdminWebModule
 - 
when used without BootstrapUiModule, no default
ViewElementrendering infrastructure will be available - 
when used with BootstrapUiModule but without AdminWebModule, the default views for an entity will never get created and view support (
EntityViewFactory) will be disabled 
 - 
 - 
added support for
LocalDate,LocalTimeandLocalDateTimeto be rendered usingDateTimeFormElement - 
it is now possible to configure default view element modes (eg. control or readonly rendering) on an
EntityConfiguration- 
these will be used in all cases where no specific configuration has been configured on property level
 
 - 
 - 
configuration & view builders support
AttributeRegistrarfor registering or removing attributes- 
using
AttributeRegistraris useful if you want to use the owner of the attribute collection (eg. theEntityConfiguration) - 
common default registrars can be found in the
EntityAttributeRegistrarsutility class 
 - 
 - 
entity views can now have a collection of configuration attributes
- 
attributes can be used to influence or extend default behaviour, new attributes are available for permission checking and admin menu rendering
 - 
during view rendering attributes are accessible (and can be modified) using
EntityViewRequest.getConfigurationAttributes() 
 - 
 - 
improvements to view configuration
- 
EntityViewFactoryAttributes.ADMIN_MENUattribute can be used to specify if a view should have an admin menu item added - 
EntityViewFactoryAttributes.ACCESS_VALIDATORattribute can be used to determine how access to the view should be validated 
 - 
 - 
added an
ExtensionViewProcessorAdapterbase class for easily creating a view for a custom extension class (see how-to) - 
added
EntityViewCustomizersutility class providing some helpers for customizingEntityViewFactoryBuilderin a chainable fashion - 
EntityModule no longer creates its own
Validatorinstance, theregisterForMvcrelated settings have been removed- 
the validator used by EntityModule is the default MVC validator
 
 - 
 - 
it’s now possible to define a different message code prefix for module entities using properties
 - 
you can now force the required status of a control by setting the
EntityAttributes.REQUIRED_PROPERTYattribute totrueorfalseon anEntityPropertyDescriptor - 
message codes for form groups and fieldsets have been extended, apart from
[description], there is now also built-in support for[help]and[tooltip]- 
this constitutes a minor breaking change in that
[description]content is now always rendered above the control of a form group. Previously this could be different depending on the type of control inside the form group. - 
see the section configuring form controls text for a full explanation of the new message codes
 
 - 
 - 
the behaviour of when controls are prefixed with
entity.has been changed- 
when using
EntityViewCommandall property controls of the base entity will should be prefixed withentity.in order to map on theEntityViewCommand.entityvalues - 
previously this was done always when an
EntityViewCommandwas found on theViewElementBuilderContext - 
in the new version this is only done if there is also an attribute
EntityPropertyControlNamePostProcessor.PREFIX_CONTROL_NAMESexplicitly set totrueon the builder context- 
the latter is done automatically by the
PropertyRenderingViewProcessorwhen building the initial controls 
 - 
 - 
though not intentionally breaking, this change can have side effects with controls no longer being prefixed, developers are encouraged to test the custom forms they have
 
 - 
 - 
new components for linking to entity views have been introduced
- 
the old
EntityLinkBuilderinterface and attributes are deprecated, but should still work as before - 
see the chapter on linking to entity views for an overview of the new components
 
 -