Interface StructuredBindingEditor<T>

  • All Superinterfaces:
    BindingHelper<T>
    All Known Subinterfaces:
    TypedStructuredBindingEditor<T>

    public interface StructuredBindingEditor<T>
    extends BindingHelper<T>
    StructuredBindingEditors convert structured data in a Map into an object. Typically a structured editor will pull several values out of the Map that are necessary to initialize the state of the object.
    class Address {
        String state
        String city
    }
    class StructuredAddressBindingEditor implements StructuredBindingEditor {
    
        public Object getPropertyValue(Object obj, String propertyName, Map source) {
            def address = new Address()
    
            address.state = source[propertyName + '_someState']
            address.city = source[propertyName + '_someCity']
    
            address
        }
    }
    
    def binder = new SimpleDataBinder()
    binder.registerStructuredEditor Address, new StructuredAddressBindingEditor()
    def resident = new Resident()
    def bindingSource = [:]
    bindingSource.name = 'Scott'
    bindingSource.homeAddress_someCity = "Scott's Home City"
    bindingSource.homeAddress_someState = "Scott's Home State"
    bindingSource.workAddress_someState = "Scott's Work State"
    bindingSource.workAddress = 'struct'
    bindingSource.homeAddress = 'struct'
    
    binder.bind resident, bindingSource
    
    resident.name == 'Scott'
    resident.homeAddress
    assert resident.homeAddress.city == "Scott's Home City"
    assert resident.homeAddress.state == "Scott's Home State"
    assert resident.workAddress
    assert resident.workAddress.state == "Scott's Work State"
    assert resident.workAddress.city == null
    
    Since:
    3.0
    See Also:
    SimpleDataBinder.registerStructuredEditor(Class, StructuredBindingEditor)
    • Method Detail

      • getPropertyValue

        T getPropertyValue​(java.lang.Object obj,
                           java.lang.String propertyName,
                           DataBindingSource source)
        The value returned from this method will be bound to the property specified by propertyName.
        Specified by:
        getPropertyValue in interface BindingHelper<T>
        Parameters:
        obj - The object that data binding is being applied to
        propertyName - The name of the property data binding is being applied to
        source - The source containing all of the values being bound to this object
        Returns:
        The value which should be bound to propertyName