3.x.x release notes
3.4.0.RELEASE
New features:
-
added separate
ViewElementMode.FILTER_FORMwhich builds the form group that is rendered in a basic EntityQuery filter form-
this allows consumers to customize the entire form group for a filter control, separately from the control itself
-
-
support has been added for configuring Autosuggest controls
-
support for marking an
EntityQueryorEntityQueryConditionastranslated, see Extending EQL -
added CSS classes and data attributes on some views to make styling easier, see Styling views
Bug-fixes and minor improvements:
-
a single checkbox can now be used as a control for basic EntityQuery filtering
3.3.0.RELEASE
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
-
-
EQL predicate
property IS EMPTYwill now check for empty string or null value when dealing with a string (text) property
New features:
-
it is now possible to specify default values for the template controls of embedded collections
-
an
EntityPropertyRegistrationHelpercomponent is now available which allows you to easily map an id property to its target entity-
this can be especially helpful when building a UI for entities spanning multiple datasources or from webservice APIs
-
-
a valid
EntityQueryExecutoris now automatically registered when creating a manual association-
this removes the need to provide a custom
AssociatedEntityQueryExecutorfor manually defined associations
-
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
-
association tabs are now hidden if the user does not have the required
AllowableActionon the target entity configuration -
simple value types (eg a domain-specific id type like
AuthorId) will now render a textbox as control-
general rule is that any custom type without readable/writable properties will yield a textbox control
-
-
fixed some issues where the
ConversionServicewas being ignored when working with custom id types -
EQL related:
-
fixed bug where a
NullPointerExceptionwas thrown if an invalid EQL expression was entered in an advanced filter -
Java 8 time types are now supported for
now()andtoday()functions -
custom textbox types (eg
email) are now supported for basic filtering-
this fixes a bug where a property marked with an
@Emailvalidator could not be used in basic filtering
-
-
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 filtering a list view based on
AllowableAction-
this can be used to hide items from a list view if the user does not have the correct permissions
-
-
addition of the 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
-