-
New Feature
-
Resolution: Obsolete
-
Neutral
-
None
-
5.2.10, 5.3.5
-
None
-
-
Yes
-
Empty show more show less
Cross field validation is not a feature of the current Magnolia Form UI implementation.
I have created a general issue for requesting this feature as a general feature throughout form fields: MGNLUI-3240
In this ticket the the idea is to implement it for the CompositeField, as it would be a alternative to handle many of the use cases that occur of fields that need to be cross validated.
Possible use cases:
- A "point of interest" CompositeField with the sub-fields "Longitude' and 'Latitude'. The field is not required, BUT if in one sub field a value is entered, the other also needs a value (no value or all have a value situation).
Idea:
Extending the CompositeField by a cross field validation of its sub fields.
Overriding the validate() method and delegating to a configurable field comparator class.
POC implementation:
I tried quickly such an implementation to test if it is possible.
I created:
- CrossFieldsValidatingCompositeField.java which extends the CompositeField and its definition & factory class.
The field delegates to an implementation of the CrossFieldsComparator.java interface to do the field comparison. - CrossFieldsComparator.java does the field comparison.
- AllEmptyOrNoneEmpty.java is the implementation for this use case, checking if one field ha a value.
Attention: This is just a POC, not product ready code! It can be used in projects, but will probably need some adaptions.
Usage:
- Add a 'fieldTypes' mapping of the FieldDefinition and the FieldFactory class. (added bootstrap file)
- Use the CrossFieldsValidatingCompositeField class for a composite field.
- Define the crossFieldsComparator property pointing to the implementation CrossFieldsComparator for the specific use case, in this case here the AllEmptyOrNoneEmpty.
Other use cases:
Just implement another version of CrossFieldsComparator.
Constraints:
I first tried to use a Vaadin Validator on the composite field.
This doesn't work because the Validator is decoupled form the invoked filed. So The Validator is not aware of any configured sub fields of a "Magnolia Composite Field".
Providing this values to the Validator to do a comparison would be very hackish (interlinking Magnolia Configurations and Vaadin Validators).
- is related to
-
MGNLUI-3617 Cross/Conditional Field Validation for Multi-Value and Composite Fields
- Closed
- is superseded by
-
MGNLUI-2542 Dynamic forms & cross-field interaction
- Accepted