--- title: Composite Fields with CustomField order: 32 layout: page --- [[components.customfield]] = Composite Fields with [classname]#CustomField# The [classname]#CustomField# is a way to create composite components like with [classname]#CustomComponent#, except that it implements the [interfacename]#Field# interface and inherit [classname]#AbstractField#, described in <>. A field allows editing a property value in the Vaadin data model, and can be bound to data with field groups, as described in <>. The field values are buffered and can be validated with validators. A composite field class must implement the [methodname]#getType()# and [methodname]#initContent()# methods. The latter should return the content composite of the field. It is typically a layout component, but can be any component. It is also possible to override [methodname]#validate()#, [methodname]#setInternalValue()#, [methodname]#commit()#, [methodname]#setPropertyDataSource#, [methodname]#isEmpty()# and other methods to implement different functionalities in the field. Methods overriding [methodname]#setInternalValue()# should call the superclass method.